Robot Bottle Opener (4 / 5 steg)
Steg 4: programvara
Följande kod görs för arduino IDE att styra en robotarm. Bara som en notering, det drar nytta av våra kretsar och bör inte användas på en arbetande Rhino Robotics arm eftersom kabelanslutningarna band skulle vara annorlunda!
Koden börjar med att sätta upp alla indata / utdata stift och sätter dem allt låg. Då visar det på LED kort till oss vi kan koppla in i 12V strömkälla. Sedan får vi loop() var varje cykel börjar genom att kalibrera arm och huvud. Efter kalibrering, är huvudet kvar i position för att ta bort flaskan locket. Motorerna följ våra fördefinierade uppsättning motioner till lyfta upp och luta framåt flasköppnare. Sedan kalibreringen upprepas och scenen roterar för nästa flaska och allt börjar igen!
I koden nedan, motor 1A betyder reläet styra ena sidan av motorer stiften och 1B skulle vara den andra sidan av motorer stiften. Till exempel, du skulle behöva 1A hög och 1B LOW att köra motorn i en riktning, eller låg 1A och 1B hög att köra motorn i den andra riktningen, eller båda låg att stänga motorn.
/*
motoriska 1A (relä 1) på digitala stift 7
motoriska 1B (relä 2) på digitala stift 6
motoriska 2A (relä 3) på digitala stift 5
motoriska 2B (relä 4) på digitala stift 4
*/
void setup()
{
pinMode (8, OUTPUT); LED
pinMode (7, OUTPUT); arm upp
pinMode (6, OUTPUT); arm ner
pinMode (5, OUTPUT); huvudet upp
pinMode (4, OUTPUT); huvudet ner
pinMode (3, ingång); hjulet switch
pinMode (2, ingång); arm switch
pinMode (1, ingång); huvudet switch
pinMode (0, OUTPUT); hjulet
digitalWrite(7,LOW);
digitalWrite(6,LOW);
digitalWrite(5,LOW);
digitalWrite(4,LOW);
digitalWrite(0,LOW);
digitalWrite(8,HIGH); slå på LED att ange redo
Delay(2000);
digitalWrite(8,LOW);
Delay(2000); sätta in 12V källa under denna paus
}
void loop()
{
Calibrate();
digitalWrite(4,HIGH); luta huvudet ner
Delay(500);
digitalWrite(7,HIGH); Upplyft arm
Delay(2000);
digitalWrite(7,LOW);
Delay(3000);
digitalWrite(4,LOW);
Delay(10);
digitalWrite(4,HIGH);
digitalWrite(7,HIGH);
Delay(1000);
digitalWrite(7,LOW);
digitalWrite(4,LOW);
Delay(10);
}
void calibrate()
{
While(!digitalRead(3)) / / rotera hjulet 22,5 grader så att flaskan är inte i vägen
{
digitalWrite(0,HIGH);
Delay(10);
}
Delay(100);
digitalWrite(0,LOW);
While(digitalRead(1)) / / flytta huvudet från flaska
{
digitalWrite(5,HIGH);
Delay(10);
}
digitalWrite(5,LOW);
digitalWrite(4,HIGH);
Delay(2000);
digitalWrite(4,LOW);
Delay(10);
While(!digitalRead(2)) / / kalibrera arm
{
digitalWrite(6,HIGH);
Delay(10);
}
Delay(50);
digitalWrite(6,LOW);
While(digitalRead(1)) / / kalibrera huvud
{
digitalWrite(5,HIGH);
Delay(10);
}
digitalWrite(5,LOW);
digitalWrite(4,HIGH);
Delay(250);
digitalWrite(4,LOW);
Delay(10);
While(!digitalRead(3)) / / rotera hjulet 22,5 grader i läge för nästa flaska
{
digitalWrite(0,HIGH);
Delay(10);
}
Delay(100);
digitalWrite(0,LOW);
}