Completed README.md, added Arduino Sketch
This commit is contained in:
parent
72f305db87
commit
730248cf9e
85
ArduinoExplorerbotSketch/explorerbot.ino
Normal file
85
ArduinoExplorerbotSketch/explorerbot.ino
Normal file
@ -0,0 +1,85 @@
|
||||
/*
|
||||
Copyright 2014 Daniele Verducci
|
||||
This file is part of ArduinoExplorerbotSketch.
|
||||
|
||||
ArduinoExplorerbotSketch is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
ArduinoExplorerbotSketch is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with ArduinoExplorerbotSketch. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* PIN
|
||||
* 7 Steering servo yellow cable
|
||||
* 3 to H-Bridge ENABLE
|
||||
* 9 to H-Bridge logic pin 1
|
||||
* 10 to H-Bridge logic pin 2
|
||||
*
|
||||
* SERIAL (9600)
|
||||
* 2 bits: the first is the steering from 1 to 127,
|
||||
* the second the acceleration.
|
||||
*/
|
||||
|
||||
const int servoPin = 7;
|
||||
const int hBridgeEnable = 3;
|
||||
const int hBridge1pin = 9;
|
||||
const int hBridge2pin = 10;
|
||||
|
||||
#include <Servo.h>
|
||||
Servo steeringServo;
|
||||
byte gamepadPosition[2];
|
||||
|
||||
void setup(){
|
||||
steeringServo.attach(servoPin); //steering servo to pin 7
|
||||
pinMode(hBridgeEnable, OUTPUT);
|
||||
pinMode(hBridge1pin, OUTPUT);
|
||||
pinMode(hBridge2pin, OUTPUT);
|
||||
Serial.begin(9600);
|
||||
}
|
||||
|
||||
void loop(){
|
||||
if(readGamepadPositionFromSerial()){
|
||||
steerTo(gamepadPosition[0]);
|
||||
accelerateTo(gamepadPosition[1]);
|
||||
}
|
||||
delay(100);
|
||||
}
|
||||
|
||||
boolean readGamepadPositionFromSerial(){
|
||||
if(Serial.available()>1){ //Bytes received in pairs
|
||||
gamepadPosition[0] = Serial.read();
|
||||
gamepadPosition[1] = Serial.read();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void steerTo(byte steeringByte){
|
||||
steeringServo.write(steeringByte); //Angles from 0° to 127°
|
||||
}
|
||||
|
||||
void accelerateTo(byte speedByte){
|
||||
if(speedByte<64){
|
||||
//Go forward
|
||||
digitalWrite(hBridge1pin, HIGH);
|
||||
digitalWrite(hBridge2pin, LOW);
|
||||
//speedByte = 1/speedByte;
|
||||
} else {
|
||||
//Go backward
|
||||
digitalWrite(hBridge2pin, HIGH);
|
||||
digitalWrite(hBridge1pin, LOW);
|
||||
//speedByte = speedByte-64;
|
||||
}
|
||||
//analogWrite(hBridgeEnable, speedByte*2);
|
||||
if(speedByte<32 || speedByte>96) digitalWrite(hBridgeEnable, HIGH);
|
||||
else digitalWrite(hBridgeEnable, LOW);
|
||||
}
|
Loading…
Reference in New Issue
Block a user