// combined code from
//http://www.meanpc.com/2012/10/affordabot-4-uploading-code-and-first.html
//http://trollmaker.com/article3/arduino-and-hc-sr04-ultrasonic-sensor
//define all pin numbers
const int PWMA =10;
const int AIN1= 6;
const int AIN2= 7;
const int PWMB= 11;
const int BIN1= 8;
const int BIN2= 9;
const int trig = 7;
const int echo=8;
void setup()
{
pinMode(PWMA,OUTPUT);
pinMode(AIN1,OUTPUT);
pinMode(AIN2,OUTPUT);
pinMode(PWMB,OUTPUT);
pinMode(BIN1,OUTPUT);
pinMode(BIN2,OUTPUT);
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
Serial.begin(9600);
}
void loop() {
double distance=distanceToSensor(); // calls the distanceToSensor method and sets it the the variable distance
if(distance>=3){ // if distance is greater than 3 centimeters it calls the goforward method opening the helmet
goForward();
delay(2000);// waits 2 seconds
}else{ // if it is less than 3 centimeters it calls the goBackward method to close the helmet
goBackward();
delay(2000); // waits to senconds
}
}
//method to open helmet, does not need to return anything
// these two are copied from meanpc
void goForward ()
{
digitalWrite (AIN1,HIGH);
digitalWrite (AIN2,LOW);
analogWrite(PWMA,234);
digitalWrite (BIN1,HIGH);
digitalWrite (BIN2,LOW);
analogWrite(PWMB,255);
}
//method to close helmet, does not need to return anything
void goBackward ()
{
digitalWrite (AIN1,LOW);
digitalWrite (AIN2,HIGH);
analogWrite(PWMA,233);
digitalWrite (BIN1,LOW);
digitalWrite (BIN2,HIGH);
analogWrite(PWMB,255);
}
// this method cannot be void or else it cannot return anything
// I set it to double so it can return a decimal
// copied from trollmaker, but I edited it a little
double distanceToSensor()
{
long duration, cm;
digitalWrite(trig, HIGH);
delayMicroseconds(1000);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
cm = (duration/2) / 29.1;
return cm;
}