SUPER ENKEL NYBÖRJARE ROBOT II (ARDUINO UNO VER.) (11 / 12 steg)
Steg 11: Programmering & kod
VERKTYG
Arduino IDE
Programmering-kabel
KODEN
Om du inte redan gjort det, ladda ner och installera Arduino IDE från ARDUINO.
Kopiera och klistra in min källa koden nedan i till Arduino IDE. Det finns också en SSBR II.ino bifogad fil.
Anslut kabelns programmering till din PC och Arduino UNO programming port.
Sammanställa och skicka programmet till SSBR II.
Detta är mycket grundläggande källa kod som gör att roboten att gå framåt och missar hinder till vänster. Det blir mycket lätt att lägga till de robotar beteenden som du framsteg.
SERVON
Här är en absolut dummies guide till hur kontinuerlig rotation servon arbeta i våra robotar.
Servon fungerar med PWM, Pulse bredd Modulation. Den nedan tabeller visar du vad en puls av X motsvarar i en standard 180 graders servo. Ändra puls och du ändra för att stoppa läge.
Pulsen på 500 mikrosekunder = 0.5 millisekunder och motsvarar ca 0 grader.
Pulsen på 1500 mikrosekunder = 1.5 millisekunder och motsvarar ca 90 grader.
Pulsen på 2500 mikrosekunder = 2,5 millisekunder och motsvarar ca 180 grader.
Diagrammet använder en kontinuerlig rotation servo, kan översättas till. Ändra puls och du ändra hastigheten.
Pulsen på 500 mikrosekunder = 0.5 ms och motsvarar om full omvänd (eller framåt).
Pulsen på 1500 mikrosekunder = 1.5 millisekunder och motsvarar ungefär allt sluta.
Pulsen på 2500 mikrosekunder = 2,5 millisekunder och motsvarar om full framåt (eller omvänt).
Framåt och bakåt är beroende på riktningen du har monterat servo, inklusive vilken sida av roboten.
Inte alla servon är lika och en puls på 1500 betyder inte alltid stopp. Du måste spela med ett minimum, maximum och stop värden i kod för varje servo.
IR-SENSORN SOM AVSTÅND
Den analoga (använder spänning i stället för 0-1) avstånd sensorn som används i denna artikel svarar med ett digitalt tal som representerar spänning i förhållande till avståndet till ett hinder.
Här hittar du en massa forumämnen som rör till att omvandla detta till en faktisk mätning, antingen i tum eller centimeter... Oroa dig inte om det. Om du inte behöver veta avståndet till vissa objekt är det inte viktigt. En enkel GO-NO GO är mer än tillräckligt att berätta om det finns något behöva undvikas.
Antydan - ju mindre behandlingen, den mer ytterligare objektet.
SKAPAD AV TED MACY
5 dec. 2014
Gratis för alla att använda, dela och ändra
SUPER ENKEL NYBÖRJARE ROBOT VERSION II
#include / / include servo bibliotek
Servo servoLeft; Deklarera vänster servo
Servo servoRight; Deklarera rätt servo
int IRpin = 0; analoga pin för att läsa IR-sensor
float IRread; Flytande punktnummer att hålla konverterade spänning som avstånd
void setup() {
Serial.BEGIN(9600); starta den seriella porten
servoLeft.attach(5); Koppla vänster signal till P5
servoRight.attach(6); Koppla rätt signal till P6
}
void loop() {
GetDistance();
Serial.println(Distance); skriva ut avståndet
om (IRread < 299) / / nr hinder
{
Forward();
}
om (IRread > 300) / / hinder
{
lturn();
}
}
void GetDistance() {
IRread = analogRead(IRpin); läser värdet i skarpa sensorn
Serial.println(IRread); skriver ut värdet på sensorn till seriell bildskärmen
Delay(50); dröjsmål att få stabila avläsningar
}
void lturn() {/ / skapa en vänstersväng subrutin
servoLeft.write(1503);
servoRight.write(1000);
Serial.println ("VÄNSTERSVÄNG");
}
void forward() {/ / skapa en framåt subrutin
servoLeft.write(1995);
servoRight.write(1000);
Serial.println("forward");
}
NEDAN INTE ANVÄNDS
void rturn() {/ / skapa en högersväng subrutin
servoLeft.write(1995);
servoRight.write(1502);
}
void nogo() {/ / skapa en stop subrutin
servoLeft.write(1503);
servoRight.write(1502);
}