Ok, so i took a screenie to show you what im talking about. When you press w or up arrow you get 01, s or down, 02, a or left, 04, d or right 08.
The terminal sees it as being put out to serial and streams it, but the serial monitor only shows a single 0 coming into the arduino. Is my code set up to only read the first character? because if so, its only going to read that 0 and not the character after... have a look
// include the SoftwareSerial library so you can use its functions:
//01 = forward
//02 = backward
//04 = left
//08 = right
#include <NewSoftSerial.h>
#include <ctype.h>
#define DEBUG 1
#define txPin 9
#define rxPin 8
#define LEDpin 13
NewSoftSerial mySerial(8,9);
int inByte; // incoming serial byte
int serialChar; // stores character of serial Input as integer
unsigned long decay; // counter from last command
unsigned long decaylimit=100000; // 100,000 is about 5 seconds
void setup() {
// define pin modes for tx, rx, led pins:
pinMode(LEDpin, OUTPUT);
// set the data rate for the SoftwareSerial port
Serial.begin(115200);
mySerial.begin(115200);
Serial.println("Hello"); // For debugging purposes
//left/right motors
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
//end debugging
}
void loop() {
//check for serial communications
{
if (mySerial.available()) {
serialChar = mySerial.read();
mySerial.println((char)inByte);
digitalWrite (LEDpin, HIGH);
delay (100);
digitalWrite (LEDpin, LOW);
delay (100);
{
Serial.println(serialChar, HEX);
// decay counts the age of the last command
// at the limit (100,000 = ~5 seconds, all signals are shut off
if (decay > decaylimit) {
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
// stop counting at limit, shut off all pins
}
else {
decay++;
}
{
#if DEBUG // echo for debugging only:
Serial.println(serialChar, HEX);
#endif
if (mySerial.available()) {
serialChar = mySerial.read();
// serialChar contains the ASCII code of the *first* character sent over serial when defined as int
switch (serialChar) {
// logical signals w s a d style
case 'w': // 119
digitalWrite(4, LOW);
digitalWrite(7, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
decay=0;
break;
case 's': // 115
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(4, HIGH);
digitalWrite(7, HIGH);
decay=0;
break;
case 'a': // 97
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(4, LOW);
digitalWrite(7, LOW);
decay=0;
break;
case 'd': // 100
digitalWrite(4, LOW);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(7, LOW);
decay=0;
break;
case 'q': // 113
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
decay = decaylimit;
}
}
}
}
}
}
}