Stap 7: Codering de ATtiny2313
Als u al weet hoe om te uploaden van code op de ATtiny2313, dan u bent ingesteld op gaan zo niet, dan eens een kijkje op het bovenstaande instructable en u zult klaar zijn om te gaan.
Zorg ervoor dat u de ultrasone bibliotheek toevoegt aan de code voor het uploaden van de code of het zal niet werken.
Dit is de code die wordt gebruikt door de Artoo [R2]:
#include <Ultrasonic.h> int MOTOR = 9; // RELAY Pin. int MOTOR2 = 7; int TRIG = 11; // Trigger Pin int ECHO = 10; // Echo Pin int Range; // The range of the object from Ping Sensor int Dist; // The Distance value Ultrasonic ultrasonic(TRIG,ECHO); // Create and initialize the Ultrasonic object. void setup() { pinMode(MOTOR, OUTPUT); //To the relay via the transistor pinMode(MOTOR2, OUTPUT); Dist = 10; //The distance in inches. Change this for increasted or dicreasted range. } void loop() { static int sensorCount = 0; Range = ultrasonic.Ranging(INC); // Range is calculated in Inches. if (Range > Dist) { digitalWrite(MOTOR, HIGH); digitalWrite(MOTOR2, HIGH); sensorCount = 0; } else { ++sensorCount; if (sensorCount == 5) // turn if we sense a wall 5 times in a row { digitalWrite(MOTOR, LOW); digitalWrite(MOTOR2, HIGH); delay(500); sensorCount = 0; } else { delay(20); // wait 20ms before testing the range again } } }
Je zou kunnen zeggen dat ik verlaten MOTOR2 altijd op dus waarom niet gewoon verbinding naar de batterij rechtstreeks in plaats van het verspillen van een transistor en het gebruik van meer geheugen van de ATtiny2313, maar de reden dat ik deed dat omdat als u deze direct aansluit, de hoeveelheid stroom die het krijgt voor sommige reden meer dan het is doet wanneer zijn toegevoegd aan een transistor , dus om het bewegen op dezelfde snelheid als MOTOR1, ik deze vervolgens gekoppeld aan een andere digitale pin.
De sensorCount-functie zorgt ervoor dat na de sensor heeft "gevoeld" 5 keer alleen dan de als functie is uitgevoerd zodat de robot zet. Elke zin tellen heeft een voorsprong van de duur van 20 MS.
Een andere reden waarom ik niet kon iets nauwkeuriger en beter met de code was omdat de ATtiny2313 een beperkte gegevens van 2k heeft, en iets meer dan dat zal niet worden geaccepteerd door de ATtiny2313 dus zorg ervoor dat uw code is een kleine stap.