This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
code [2014/02/01 00:19] jgensler8 |
code [2014/02/15 01:13] jgensler8 |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | <code> /* | + | ====== Headline ====== |
- | read from a software serial connection (Raspberry Pi) | + | <code> |
+ | /* | ||
+ | SoftwareSerial to ttyAMA0 | ||
*/ | */ | ||
#include <SoftwareSerial.h> | #include <SoftwareSerial.h> | ||
+ | |||
+ | #define PULSE_A 3 | ||
+ | #define PULSE_B 11 | ||
+ | #define DIR_A 12 | ||
+ | #define DIR_B 13 | ||
SoftwareSerial mySerial(8, 9); // RX, TX | SoftwareSerial mySerial(8, 9); // RX, TX | ||
+ | char serialIn; | ||
+ | int movementTime = 1000; | ||
+ | int basicPower = 50; | ||
void setup() | void setup() | ||
{ | { | ||
+ | //serial communication | ||
Serial.begin(4800); | Serial.begin(4800); | ||
while (!Serial) { | while (!Serial) { | ||
Line 15: | Line 26: | ||
Serial.println("Started"); | Serial.println("Started"); | ||
mySerial.begin(9600); | mySerial.begin(9600); | ||
+ | | ||
+ | //set the motor pins | ||
+ | pinMode( PULSE_A, OUTPUT); | ||
+ | pinMode( PULSE_B, OUTPUT); | ||
+ | pinMode( DIR_A, OUTPUT); | ||
+ | pinMode( DIR_B, OUTPUT); | ||
+ | | ||
+ | digitalWrite( PULSE_A, LOW); | ||
+ | digitalWrite( PULSE_B, LOW); | ||
+ | digitalWrite( DIR_A, LOW); | ||
+ | digitalWrite( DIR_B, LOW); | ||
+ | | ||
+ | /* | ||
+ | analogWrite( PULSE_A, 100); | ||
+ | analogWrite( PULSE_B, 100); | ||
+ | */ | ||
} | } | ||
void loop() | void loop() | ||
{ | { | ||
- | if (mySerial.available()) | + | if (mySerial.available()){ |
- | Serial.write(mySerial.read()); | + | serialIn = mySerial.read(); |
+ | Serial.print( serialIn); | ||
+ | if( serialIn == '+' ){ | ||
+ | goForward( movementTime, basicPower); | ||
+ | } | ||
+ | else if( serialIn == '-'){ | ||
+ | //goReverse( movementTime, basicPower); | ||
+ | } | ||
+ | else if( serialIn == '>'){ | ||
+ | turnRight(movementTime, basicPower); | ||
+ | } | ||
+ | else if( serialIn == '<'){ | ||
+ | turnLeft(movementTime, basicPower); | ||
+ | } | ||
+ | } | ||
if (Serial.available()) | if (Serial.available()) | ||
mySerial.write(Serial.read()); | mySerial.write(Serial.read()); | ||
+ | } | ||
+ | |||
+ | void goForward(int time, int power){ | ||
+ | digitalWrite( PULSE_A, HIGH); | ||
+ | digitalWrite( PULSE_B, HIGH); | ||
+ | delay(time); | ||
+ | analogWrite( PULSE_A, power); | ||
+ | analogWrite( PULSE_B, power); | ||
+ | //delay(time); | ||
+ | analogWrite( PULSE_A, 0); | ||
+ | analogWrite( PULSE_B, 0); | ||
+ | digitalWrite( PULSE_A, LOW); | ||
+ | digitalWrite( PULSE_B, LOW); | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | //as far as we know, this will never work... | ||
+ | void goReverse( int time, int power){ | ||
+ | digitalWrite( PULSE_A, HIGH); | ||
+ | digitalWrite( PULSE_B, HIGH); | ||
+ | delay(time); | ||
+ | analogWrite( PULSE_A, power); | ||
+ | analogWrite( PULSE_B, power); | ||
+ | //delay(time); | ||
+ | analogWrite( PULSE_A, 0); | ||
+ | analogWrite( PULSE_B, 0); | ||
+ | digitalWrite( PULSE_A, LOW); | ||
+ | digitalWrite( PULSE_B, LOW); | ||
+ | } | ||
+ | */ | ||
+ | |||
+ | void turnLeft(int time, int power){ | ||
+ | digitalWrite( PULSE_A, HIGH); | ||
+ | delay(time); | ||
+ | analogWrite( PULSE_A, power); | ||
+ | //delay(time); | ||
+ | analogWrite( PULSE_A, 0); | ||
+ | digitalWrite( PULSE_A, LOW); | ||
+ | } | ||
+ | |||
+ | void turnRight(int time, int power){ | ||
+ | digitalWrite( PULSE_B, HIGH); | ||
+ | delay(time); | ||
+ | analogWrite( PULSE_B, power); | ||
+ | //delay(time); | ||
+ | analogWrite( PULSE_B, 0); | ||
+ | digitalWrite( PULSE_B, LOW); | ||
} | } | ||
</code> | </code> |