Artoo [R2] (ATtiny2313 vägg att undvika Robot) (7 / 10 steg)
Steg 7: Kodning av ATtiny2313
Om du redan vet hur ladda upp koden till ATtiny2313 då du är inställda på att gå om inte, då har kommer att en titt på ovanstående instructable och du vara redo att gå.
Se till att du lägger till ultraljud bibliotek till koden innan du överför koden eller det kommer inte att fungera.
Detta är koden som används av Artoo [R2]:
#include < Ultrasonic.h >
int MOTOR = 9. RELÄ stift.
int MOTOR2 = 7.
int TRIG = 11; Trigger Pin
int ECHO = 10; ECHO Pin
int-typ. Spänna av objektet från Ping Sensor
int Dist; Avståndet värdet
Ultrasonic ultrasonic(TRIG,ECHO); Skapa och initiera det ultraljuds objektet.
void setup() {
pinMode (MOTOR, OUTPUT); Att reläet via transistorn
pinMode (MOTOR2, OUTPUT);
Dist = 10; Avståndet i inches. Ändra detta för increasted eller dicreasted.
}
void loop() {
statisk int sensorCount = 0;
Rad = ultraljud. Ranging(Inc); Intervallet beräknas i Inches.
om (utbud > Dist) {
digitalWrite (MOTOR, hög);
digitalWrite (MOTOR2, hög);
sensorCount = 0;
} annat {
++ sensorCount;
om (sensorCount == 5) / / slå om anar vi en vägg 5 gånger i rad
{
digitalWrite (MOTOR, låg);
digitalWrite (MOTOR2, hög);
Delay(500);
sensorCount = 0;
}
annat
{
Delay(20); vänta 20ms innan testa spänna igen
}
}
}
Man kan säga att jag lämnar MOTOR2 alltid på så varför inte bara ansluta den till batteriet direkt istället för att slösa en transistor och använda upp mer minne av ATtiny2313, men anledningen till att jag gjorde det var för om du ansluter den direkt, hur mycket ström det blir av någon anledning mer än det gör när dess adderat till en transistor , så för att flytta med samma hastighet som MOTOR1, jag kopplade det till en annan digital pin.
Funktionen sensorCount ser till att efter sensorn har "kände" 5 gånger endast då om funktion utförs för att göra roboten vända. Varje känsla räkna har en varaktighet lucka på 20ms.
En annan anledningen varför jag inte kunde göra något mer exakt och bättre med koden var att ATtiny2313 har en begränsad data av 2k, och något mer än så inte kommer att accepteras av ATtiny2313 så se till att din kod är en liten en.