http://sites.schaltungen.at/arduino-uno-r3/testen
ARDUINO KochbuchWels, am 2016-11-21BITTE nützen Sie doch rechts OBEN das Suchfeld [ ] [ Diese Site durchsuchen]DIN A3 oder DIN A4 quer ausdrucken ********************************************************************************** DIN A4 ausdrucken *********************************************************
http://books.google.at/books?id=LiGw4IhN0RUC&pg=PA122&lpg=PA122&dq=%22char+HEADER+%3D+%27H%27;%22&source=bl&ots=7o2xVENwq0&sig=n9pfRmZD2xzBcq3AZSRmFsBRMFY&hl=de&sa=X&ei=w7ZtVMOqN4ObgwTV64H4Cw&ved=0CEoQ6AEwBA#v=onepage&q=%22char%20HEADER%20%3D%20%27H%27%3B%22&f=false
https://www.inkling.com/read/arduino-cookbook-michael-margolis-2nd/chapter-4/recipe-4-8 4.8Sending Binary Values from Processing to ArduinoProblemYou want to send binary bytes, integers, or long values from Processing to Arduino. For example, you want to send a message consisting of a message identifier “tag” and two 16-bit values. Sie möchten Binärbytes, Ganzzahlen oder langen Werte von Verarbeitungs schicken Arduino. Zum Beispiel, um eine Nachricht, die aus einer Nachrichten-ID "tag" und zwei 16-Bit-Werte senden möchten. SolutionUse this code: // Processing Sketch /* SendingBinaryToArduino * Language: Processing */import processing.serial.*;Serial myPort; // Create object from Serial classpublic static final char HEADER = 'H';public static final char MOUSE_TAG = 'M';void setup(){ size(512, 512); String portName = Serial.list()[1]; myPort = new Serial(this, portName, 9600);}void draw(){}void serialEvent(Serial p) { // handle incoming serial data String inString = myPort.readStringUntil('\n'); if(inString != null) { print( inString ); // echo text string from Arduino }}void mousePressed() { sendMessage(MOUSE_TAG, mouseX, mouseY);}void sendMessage(char tag, int x, int y){ // send the given index and value to the serial port myPort.write(HEADER); myPort.write(tag); myPort.write((char)(x / 256)); // msb myPort.write(x & 0xff); //lsb myPort.write((char)(y / 256)); // msb myPort.write(y & 0xff); //lsb}
When the mouse is clicked in the Processing window, Here is the Arduino code to receive these messages and echo the results back to Processing:
Wenn die Maus in das Verarbeitungsfenster geklickt wird, nachrichts mit dem 8-Bit-Markierung angibt, daß dies eine Mausnachricht und die zwei 16-Bit-Maus x und y-Koordinaten bezeichnet werden. Die Sendmessage-Funktion sendet die 16-Bit-x und y-Werte als zwei Bytes, wobei das höchstwertige Byte zuerst.
Hier ist der Arduino-Code, um diese Nachrichten zu empfangen und Echo die Ergebnisse zurück an Verarbeitung // BinaryDataFromProcessing// These defines must mirror the sending program:const char HEADER = 'H';const char MOUSE_TAG = 'M';const int TOTAL_BYTES = 6 ; // the total bytes in a message void setup(){ Serial.begin(9600);}void loop(){ if ( Serial.available() >= TOTAL_BYTES) { if( Serial.read() == HEADER) { char tag = Serial.read(); if(tag == MOUSE_TAG) { int x = Serial.read() * 256; x = x + Serial.read(); int y = Serial.read() * 256; y = y + Serial.read(); Serial.print("Received mouse msg, x = "); Serial.print(x); Serial.print(", y = "); Serial.println(y); } else { Serial.print("got message with unknown tag "); Serial.write(tag); } } }} Discussion
The Processing code sends a header byte to indicate that a valid message follows. This is needed so Arduino can synchronize if it starts up in the middle of a message or if the serial connection can lose data, such as with a wireless link. The tag provides an additional check for message validity and it enables any other message types you may want to send to be handled individually. In this example, the function is called with three parameters: a tag and the 16-bit
The Arduino code checks that at least Die Verarbeitungscode sendet ein Header-Byte, um anzugeben, dass eine gültige Nachricht folgt. Dies wird so Arduino Bedarf synchronisieren können, wenn es beginnt in der Mitte einer Nachricht oder die serielle Verbindung können Daten, wie beispielsweise mit einer drahtlosen Verbindung zu verlieren. Der Tag bietet eine zusätzliche Kontrolle für die Nachrichten Gültigkeit und es ermöglicht alle anderen Nachrichtentypen können Sie zu senden, um individuell gehandhabt werden. Einem Tag und der 16-Bit-x und y-Koordinaten der Maus: In diesem Beispiel wird die Funktion mit drei Parametern aufgerufen. Die Arduino Code überprüft, dass mindestens MESSAGE_BYTES empfangen worden sind, um sicherzustellen, dass die Nachricht nicht verarbeitet, bis alle erforderlichen Daten verfügbar sind. Nachdem der Header und Tag überprüft werden, werden die 16-Bit-Werte in zwei Bytes zu lesen, mit dem ersten um 256 multipliziert, um das höchstwertige Byte auf seinen ursprünglichen Wert wiederherzustellen. DIN A4 ausdrucken ********************************************************* Impressum: Fritz Prenninger, Haidestr. 11A, A-4600 Wels, Ober-Österreich, mailto:[email protected] ENDE |