Wallbots: Autonome magnetische Robots die Traverse verticale oppervlakken (11 / 12 stap)

Stap 11: Upload de Code op de Arduino

Ik ben mijn onderstaande code plakken. Elke sensor wordt bemonsterd, en de robot beweegt afhankelijk van welke sensor detecteert een menselijke hand, en al dan niet is het rood, groen of geel (als het moet weg of naar objecten verplaatst).

/*
Wallbots Code
Stacey Kuznetsov
6 mei 2009
voor het maken van dingen interactieve, Spring ' 09

Dit is de fundamentele code naar station robotic verkeer van 2 sevo motoren op basis van input
vanaf 4 lichtsensoren. Beweging ondersteunt verschillende instellingen, op basis van de robot-modus.
Rode robots bewegen snel, naar objecten (wanneer licht sensoren duisternis detecteren)
Groene robots bewegen op middellange snelheid, uit de buurt van objecten (uit de buurt van donkere gebieden)
Gele robots slowerly schuift en stopt om te knipperen wanneer objecten worden aangetroffen

Het doel van deze robots is om verder te gaan met behulp van magnetische wielen muren.
Ondersteunde verkeer omvat rechts, links en voorwaartse richtingen. Verschillende
snelheden worden geïmplementeerd op basis van de robot-modus.

De lichte sensoren kalibreert auto-op reboot of wanneer de bovenste sensor wordt gedekt
voor meer dan 3 seconden ingedrukt.

*/

#include < Servo.h >

Linker- en servo 's
Servo servo1;
Servo servo2;

Lichtsensoren
int topSensor = 0; 700
int leftSensor = 1; Drempel is 400
int frontSensor = 2; 400
int rightSensor = 3; 300

Hardcoded drempels (niet gebruikt omdat we auto-kalibreert)
int topThreshhold = 400;
int leftThreshhold = 550;
int frontThreshhold = 200;
int rightThreshhold = 650;

Huidige robot type (rode gree of geel)
int status = 0;

Staat waarden
int rood = 0;
int groen = 1;
int oranje = 2;

Pinnen om te rijden de top tri-color LED
int redPin = 5;
int greenPin = 6;

Waarden te houden van de sensor lezingen
int de voorzijde;
int recht;
int links;
int de top;

Auto-kalibreert lichtsensor drempels
ongeldig calibrate() {}
Serial.println("CALIBRATING");
lange int val = 0;
for (int i = 0; ik < 5; i ++) {}
Val += analogRead(frontSensor);
delay(10);
}
frontThreshhold = (val /5) - 80;
Val = 0;

for (int i = 0; ik < 5; i ++) {}
Val = val + analogRead(topSensor);
Serial.println(analogRead(topSensor));
Serial.println(val);
delay(10);
}

topThreshhold (val /5) =-200;

Val = 0;
for (int i = 0; ik < 5; i ++) {}
Val += analogRead(rightSensor);
}
rightThreshhold = (val /5) - 100;
Val = 0;
for (int i = 0; ik < 5; i ++) {}
Val += analogRead(leftSensor);
}
leftThreshhold = (val /5) - 100;

Afdrukken van drempelwaarden voor debug
Serial.Print ("top:");
Serial.println(topThreshhold);
Serial.Print ("recht:");
Serial.println(rightThreshhold);
Serial.Print ("linker:");
Serial.println(leftThreshhold);
Serial.Print ("voorkant:");
Serial.println(frontThreshhold);

}

VOID Setup
{
pin 13 voor foutopsporing inschakelen
pinMode (13, OUTPUT);
digitalWrite (13, hoge);
Setup sensor pinnen
for (int i = 0; ik < 4; i ++) {}
pinMode (i, ingang);
}
Serial.begin(9600);
Calibrate();
genereren van een willekeurige staat
STAAT = willekeurige (0, 3);
setColor(STATE);
}

MOTORISCHE FUNCTIES

VOID turnLeft()
{
Serial.println("left");

Start();
vertraging(20);
for (int i = 0; ik < 20; i ++) {}
servo2.write(179);
servo1.write(1);
vertraging(20);
}
Stop();
vertraging(20);
}

ongeldig turnRight() {}
Serial.println("right");
Start();
vertraging(20);
for (int i = 0; ik < 20; i ++) {}

servo2.write(1);
servo1.write(179);
vertraging(20);
}
Stop();
vertraging(20);
}

VOID goForward (int del = 20) {}
Serial.println("Forward");
Start();
vertraging(20);
for (int i = 0; ik < 20; i ++) {}
servo1.write(179);
servo2.write(179);
delay(del);
}
Stop();
vertraging(20);
}

VOID stop() {}
servo1.Detach();
servo2.Detach();
delay(10);
}

VOID start() {}
servo1.attach(10);
servo2.attach(9);

}

Set in de kleur van de top tri-color LED op basis van de huidige status
VOID setColor (int kleur) {}
Als (kleur == RED) {}
digitalWrite (greenPin, 0);
analogWrite (redPin, 180);
}
anders als (kleur groen ==) {}
digitalWrite (redPin, 0);
analogWrite (greenPin, 180);
}
anders als (kleur oranje ==) {}
analogWrite (redPin, 100);
analogWrite (greenPin, 100);
}
}

Knipperen van de gele kleur (als robot wordt verward)
ongeldig blinkOrange() {}
for (int i = 0; ik < 5; i ++) {}
analogWrite (redPin, 100);
analogWrite (greenPin, 100);
delay(300);
digitalWrite (redPin, 0);
digitalWrite (greenPin, 0);
delay(300);
}

analogWrite (redPin, 100);
analogWrite (greenPin, 100);

}

void loop
{

Top = analogRead(topSensor);
lang int tijd = millis();
terwijl (analogRead(topSensor) < topThreshhold) {}
delay(10); Hoewel er een golf van de arm van de gebruiker doen niets
}
Als ((millis()-time) > 3000) {}
Als de sensor was bedekt meer dan 3 seconden, opnieuw kalibreren
Calibrate();
}

Als de bovenste sensor was bedekt, wijzigen we status
Als (top < topThreshhold) {}
STAAT (STATE + 1) = 3 %;
setColor(STATE);
Serial.Print ("gewijzigde status:");
Serial.println(State);
}

Lees de andere sensoren
rechts = analogRead(rightSensor);
links = analogRead(leftSensor);
voorkant = analogRead(frontSensor);

Als (staat == RED) {}
Ga naar objecten
Als (voorzijde < frontThreshhold) {}
goForward();
} else if (juiste < rightThreshhold) {}
turnRight();
} else if (linker < leftThreshhold) {}
turnLeft();
} else {}
goForward();
}
}
Als (staat == groen) {}
Ga uit de buurt van objecten
Als (voorzijde < frontThreshhold) {}
int dir = random(0,2);
Als (dir == 0 & & juiste > rightThreshhold) {}
turnRight();
} else if (dir == 1 & & links > leftThreshhold) {}
turnLeft();
}
} else if (juiste < rightThreshhold) {}
Als (links > leftThreshhold) {}
turnLeft();
} else {}
goForward();
}
} else if (linker < leftThreshhold) {}
Als (juiste > rightThreshhold) {}
turnRight();
} else {}
goForward();
}
} else {}
goForward();
}
delay(200);
}

Als (staat Oranje ==) {}
alleen verplaatsen als zijn er dat geen hand bewegingen-anders knipperen
int dir = willekeurige (0, 3);
Als (linker < leftThreshhold || juiste < rightThreshhold ||
voorzijde < leftThreshhold) {}
blinkOrange();
} else {}
Als (dir == 0) {}
goForward();
} else if (dir == 1) {}
turnRight();
} else if (dir == 2) {}
turnLeft();
}
delay(1000);
}
delay(10);
}
}

Gerelateerde Artikelen

Autonome zonne-Robot fase 1

Autonome zonne-Robot fase 1

achtergrond:Hallo, mijn naam is Ben Rawstron en dit is de robot die ik op, onlangs in mijn tweedejaars gewerkt heb (tiende graad) jaar van de middelbare school. Ik heb dit project als een "onafhankelijke studie" op mijn lokale school hier in Wal
RC auto naar autonome Arduino Robot

RC auto naar autonome Arduino Robot

Hebt u ooit gewenst om te bouwen van een eenvoudige autonome Arduino robot? Ik werd geïnspireerd om het bouwen van een fundamentele Arduino robot om te helpen mijn begrip van de Arduino, de Arduino IDE, en de werking van de ultrasone sensoren en moto
Chefbot: Een DIY autonome mobiele robot voor het serveren van voedsel in de hotels

Chefbot: Een DIY autonome mobiele robot voor het serveren van voedsel in de hotels

Zoals de titel al zegt, gaan we om te zien hoe het bouwen van een autonome mobiele robot genaamd Chefbot die voor het serveren van eten en drinken in hotels en restaurants.Dit was een hobby-project en ik bouwde deze robot na het zien van een robot ge
MANUAL / autonome controle ROBOT (met behulp van de SENSOR FUSION techniek)

MANUAL / autonome controle ROBOT (met behulp van de SENSOR FUSION techniek)

DTMF of Dual Tone meerdere frequentie is een handige kleine manier van controlerende machines met uw cellphone. Dit instructable toont u, zachte lezer hoe maak je een goedkoper dan vuil DTMF gecontroleerd robot die ook autonoom, yeh functioneren kan!
Autonome Autonavigation Robot (Arduino)

Autonome Autonavigation Robot (Arduino)

Hallo,Dit is een stap voor stap handleiding om een autonome navigatie robot te bouwen. We gebruiken de Arduino microcontroller waarmee deze robot. We hebben twee verschillende programma's voor deze robot. De eerste stelt de robot rondrijden te voorko
Een robot die ik gebouwd voor 2009 wereld Robot Olympiade open categorie kunstenaar robot (kampioen)

Een robot die ik gebouwd voor 2009 wereld Robot Olympiade open categorie kunstenaar robot (kampioen)

Neem een kijkje op de video van het (gemaakt tijdens het nationale niveau)video van de robot in actie hier http://www.youtube.com/watch?v=ZZwF1Y9GgYoSorry, heb ik niet veel foto's van de robot meer van de productenNeem eens een kijkje op de robot die
Autonome mobiele Robot met behulp van ROS clumsybot

Autonome mobiele Robot met behulp van ROS clumsybot

onze binnenshuis autonome mobiele robot met behulp van ROS, Rtabmap, raspberry pi 2, kinect, ubuntu14.04 ltsOnze afstudeerprojectonze binnenshuis autonome mobiele robot met behulp van ROS, Rtabmap, raspberry pi 2, kinect, ubuntu14.04 lts we installer
Terra Spider: Autonome sanering Robot

Terra Spider: Autonome sanering Robot

Dit project werd ontworpen en gebouwd door studenten in het programma van het platform aan het California College van de Kunsten; Manali Chitre (MAAD) Anh Vu (BArch) en Mallory Van Ness (maart). De studio-cursus creatieve het platform Machines (herfs
LDRs + Arduino = een eenvoudige robot die het licht kan voelen!

LDRs + Arduino = een eenvoudige robot die het licht kan voelen!

Een LDR is een Light Dependent Resistor en heeft vele toepassingen, bijvoorbeeld een photocel dat wanneer de lichten van uw huis kunt schakelen zijn donker buiten.Een interessante manier om te begrijpen hoe het werkt is het lezen van haar waarden met
Autonome brandweerman Robot

Autonome brandweerman Robot

Het is een robot die autonoom detecteren en blussen van brand. Het gebruikt vlamsensor voor detectie en arduino board voor verwerking. Brandblusser samen met de elektronische klep (actuator) wordt gebruikt de gedetecteerde brand te blussen.De robot r
Magnetische Scrubber die de binnenkant van de vazen en aquaria kunt schoonmaken

Magnetische Scrubber die de binnenkant van de vazen en aquaria kunt schoonmaken

Soms kan het moeilijk zijn om de binnenkant van containers zoals vazen en vis tanks schoon te maken. Vele bloemenvazen hebben een opening die is te smal om te passen uw hand door en een vorm dat het lastig maakt om het gebruik van een borstel. Met ee
Canbot (een robot die kan)

Canbot (een robot die kan)

Hallo vrienden...Dit is mijn tweede Instructables.Zijn naam is Canbot (een robot die kan)Het doel van het maken van deze robot isIk wil graag een robot die een gaan overal.Deze robot kan gevoel kleur, obstakel, diepte enz.Stap 1: Verzamelen van mater
Hoe maak je een robot die toren van Hanoi spelen kan

Hoe maak je een robot die toren van Hanoi spelen kan

op September heb ik een robot die toren van Hanoi door Makeblock spelen kan gebouwd. En we nam het mee naar de wereld Maker Faire New York 2013.Voor meer informatie vindt u hier.Aan de slagOnlangs heb ik een nieuwe herbouwd. Dit instructable, hoe maa
Hoe maak je een eenvoudige humanoïde Robot die gooit

Hoe maak je een eenvoudige humanoïde Robot die gooit

Na het zien van een speelgoed robot die kon gooien, was mijn 7 - jarige zoon vastbesloten om te bouwen van zijn eigen. Na veel brainstormen en vele mislukte prototypes, dit is wat hij kwam met. Hij is zo trots op zijn schepping, en ik ben het helpen