but now it reads only one digit. So if I type 10, I get :
Works great! with: 'No line ending'but now it reads only one digit. So if I type 10, I get :I received: 1I received: 0what should I change?PS: Thanks dxw00d
int incomingByte = 0; // for incoming serial dataString inString = ""; //to store serial datavoid setup() { Serial.begin(9600); // opens serial port, sets data rate to 9600 bps}void loop() { // send data only when you receive data: while (Serial.available() > 0) { incomingByte = Serial.read(); inString += (char)incomingByte; //add data to string } if (inString != ""){ //if the string isn't empty... // say what you got: Serial.print("I received: "); Serial.println(inString); inString = ""; //clear string for new input }}
/* * Example for Serial2Int * When reading from the serial monitor, there are two important things to note: * (1) Bytes are read one at a time. So sending "246" will be read by your * code as '2', then '4', then '6'. If you want to identify them as related in some * way, you need a way to determine that. This example uses start and stop bytes. * (2) Sending a number through the monitor sends it's ASCII representation, not * the value itself. So typing 3 and hitting enter would send '3' or 51 as per the * ascii table. To account for this, we will be using atoi(), which takes a null * terminated array of chars, also known as a string, and produces the int equivalent. */// To send a number through the serial monitor, put it between bracketsconst char startByte = '<';const char stopByte = '>';// Maximum characters in an int + null terminated characterconst short maxBuffer = 6;void setup() { Serial.begin(57600); Serial.println("[Serial2Int]");}void loop() { // Stores the characters between the start and stop bytes static char buffer[maxBuffer]; // Keeps track of spot in buffer static short index=0; if (Serial.available() > 0 ) { char inChar = Serial.read(); if (inChar==startByte) { // If start byte is received index=0; // then reset buffer and start fresh } else if (inChar==stopByte) { // If stop byte is received buffer[index] = '\0'; // then null terminate processData(buffer); // and process the data index=0; // this isn't necessary, but helps limit overflow } else { // otherwise buffer[index] = inChar; // put the character into our array index++; // and move to the next key in the array } /* Overflow occurs when there are more than 5 characters in between * the start and stop bytes. This has to do with having limited space * in our array. We chose to limit our array to 5 (+1 for null terminator) * because an int will never be above 5 characters */ if (index>=maxBuffer) { index=0; Serial.println("Overflow occured, next value is unreliable"); } }}void processData(char buffer[]) { unsigned int value = atoi(buffer); // convert string to int Serial.print("Value: "); Serial.println(value);}
int incomingByte = 0; // for incoming serial databoolean written = false;void setup() { Serial.begin(9600); // opens serial port, sets data rate to 9600 bps}void loop() { // send data only when you receive data: if (Serial.available() > 0) Serial.print("I received: "); while (Serial.available() > 0) { incomingByte = Serial.read(); Serial.print((char)incomingByte); written = true; } if(written){ Serial.println(); written = false; }}
Will this work?
QuoteWill this work? Is this a new parlour game?