Stap 4: deze afbeelding invoegen op de Edison en beginnen met coderen!
De code basic's is vrij eenvoudig, maar zorg de servo roteren in stappen van rechts naar links en terug en breng vervolgens de ultrasone sensor opzoeken van de afstand tot de huidige positie.
Alle informatie is afgedrukt naar serieel, heks, die we later gebruiken zullen om een describer te trekken uit de verzamelde gegevens.
De code gaat als volgt.
Onderdelen definiëren en instellen van globale variabelen.
#define ECHOPIN 6 #define TRIGPIN 5 #include Servo myservo; int pos = 0;
Laat daarna de juiste setup.
void setup() { Serial.begin(115200); myservo.attach(9); pinMode(ECHOPIN, INPUT); pinMode(TRIGPIN, OUTPUT); }
En dan het hoofdprogramma. Als u wilt wijzigen de hoek van de servo gewoon aanpassen de pos = 10 en pos = 170.
Dit is de beweging van de servo's in servo positie. De pos += 3 betekent dat elke stap bestaat uit 3 stappen voor de servomotor.
oid loop() { myservo.write(10); delay(1000); for(pos = 10; pos <= 170; pos += 3) { myservo.write(pos); Print(Distance() , pos); delay(15); } delay(1000); for(pos = 170; pos>=10; pos-=3) { myservo.write(pos); Print(Distance() , pos); delay(15); }}
Dan maken we enkele subroutines uit te voeren in de lus. Dit zal alleen het hoofdprogramma kijken veel meer schoner maken.
void Print (int R , int T){ Serial.print(R);Serial.print(", "); Serial.print(T);Serial.println("."); delay(100); }float Distance () { digitalWrite(TRIGPIN, LOW); delayMicroseconds(2); digitalWrite(TRIGPIN, HIGH); delayMicroseconds(10); digitalWrite(TRIGPIN, LOW); // Distance Calculation float distance = pulseIn(ECHOPIN, HIGH); distance= distance/58.2; return(distance); }