Arduino Candygrabber (3 / 9 steg)

Steg 3: Arduino



Att ansluta leksaken till den arduino ta en skärbräda och ansluta allt som i diagrammet i bild 1, och ladda upp skissen Candygrabber.pde som du hittar i zip-filen på det första steget. Observera att photointerupter definieras som stift 5 eftersom vi använder det som ett avbrott. Du kan läsa mer om avbrott på http://www.arduino.cc/en/Reference/AttachInterrupt.

Funktionen setup() anropas när en skiss startar. Vi använder det för att initiera variabler, pin lägen och motorerna. Setup-funktionen kommer att bara köra en gång, efter varje makt upp eller återställning av Arduino styrelsen.
Nästa är loop funktion som startar, definierar inByte som byte variabel och tilldelar det värdet 255 och startar ett tag loop som kommer att köra tills det blir ett nollvärde (0) genom Serial.read(). Detta är viktigt så det vet att de tre nästa värden blir det är kommandot värdena. Om vi inte använder noll kommandona skulle få blandas ihop (t.ex. ibland värden SKIFT för en plats så istället för att flytta motorX det skulle flytta motorY). I while loop vi också kalla readInteruptors() fungerar så att den kan kontrollera om transport har nått en av gränslägesbrytarna och stoppa motorerna. När det blir en noll värde while loopen är avslutat och det börja läsa nästa tre värdena, och när det blir alla tre värden det anropar funktionen runMotors().
Funktionen runMotors() kontrollerar vilken riktning varje motor ska köras och även om transport på det gränser. Den enda återstående funktionen är stateChange() som utlöses när något faller i hålan. Skickar den ett meddelande om att du har vunnit till AIR app som sedan skickar det till den användare som spelar.

#include < AFMotor.h > int pinLDR = 5; int sensorPin = 7; int limitSwitch1 [2]; int limitSwitch2 [2]; int limitSwitch1PwrPIN = 28; int limitSwitch2PwrPIN = 30; int incomingByte [128]; int numBytes = 0; int motorSpeed = 0;

AF_DCMotor motorGrabber(1);
AF_DCMotor motorX(3);
AF_DCMotor motorY (4), volatileint stat = låg, void setup() {
attachInterrupt (pinLDR, TillståndÄndra, faller); int jag = 0;

limitSwitch1 [0] = 36.
limitSwitch1 [1] = 38.
limitSwitch2 [0] = 40;
limitSwitch2 [1] = 42. //Set pin modesfor (i = 0; i < 2; i ++) {
pinMode (limitSwitch1 [i], ingång);
pinMode (limitSwitch2 [i], ingång);}
pinMode(limitSwitch1PwrPIN,OUTPUT);
digitalWrite(limitSwitch1PwrPIN,HIGH);
pinMode(limitSwitch2PwrPIN,OUTPUT);
digitalWrite (limitSwitch2PwrPIN, hög), för (jag = 0; jag < 3; i ++) {
incomingByte [i] = 6;}

motorGrabber.setSpeed(255);
motorGrabber.run(RELEASE);
motorX.setSpeed(255);
motorX.run(RELEASE);
motorY.setSpeed(255);
motorY.run(RELEASE);

Serial.BEGIN(9600);} void loop() {int jag = 0;
byte inByte = 255; medan (inByte! = 0) {
inByte = Serial.read();
readInteruptors();} om (inByte ==0){while(Serial.available() < 3) {;} Läs alla data i bufferfor (i = 0; i < 3; i ++) {
incomingByte [i] = Serial.read();}
Serial.flush();}
runMotors();} void readInteruptors() {om ((incomingByte [0] < 6 & & digitalRead (limitSwitch1 [0]) == låg) || (incomingByte [0] > 6 & & digitalRead(limitSwitch1[1])==LOW)) {
incomingByte [0] = 6;
motorX.run(RELEASE);} om ((incomingByte [1] < 6 & & digitalRead (limitSwitch2 [0]) == låg) || (incomingByte [1] > 6 & & digitalRead(limitSwitch2[1])==LOW)) {
incomingByte [1] = 6;
motorY.run(RELEASE) ;}} void runMotors() {om (incomingByte [0] < 6 & & digitalRead(limitSwitch1[0])==HIGH) {
motorSpeed = map(incomingByte[0],5,1,0,255);
motorX.run(BACKWARD);
motorX.setSpeed(motorSpeed);} ElseIf (incomingByte [0] > 6 & & digitalRead(limitSwitch1[1])==HIGH) {
motorSpeed = map(incomingByte[0],7,11,0,255);
motorX.run(FORWARD);
motorX.setSpeed(motorSpeed);} annat {
incomingByte [0] = 6;
motorX.run(RELEASE);} om (incomingByte [1] < 6 & & digitalRead(limitSwitch2[0])==HIGH) {
motorSpeed = map(incomingByte[1],5,1,0,255);
motorY.run(BACKWARD);
motorY.setSpeed(motorSpeed);} ElseIf (incomingByte [1] > 6 & & digitalRead(limitSwitch2[1])==HIGH) {
motorSpeed = map(incomingByte[1],7,11,0,255);
motorY.run(FORWARD);
motorY.setSpeed(motorSpeed);} annat {
incomingByte [1] = 6;
motorY.run(RELEASE);} om (incomingByte [2] < 6) {
motorSpeed = map(incomingByte[2],5,1,0,255);
motorGrabber.run(BACKWARD);
motorGrabber.setSpeed(motorSpeed);} ElseIf (incomingByte [2] > 6) {
motorSpeed = map(incomingByte[2],7,11,0,255);
motorGrabber.run(FORWARD);
motorGrabber.setSpeed(motorSpeed);} annat {
incomingByte [2] = 6;
motorGrabber.run(RELEASE) ;}} void stateChange() {
Serial.println("win");
Serial.flush();}

Se Steg
Relaterade Ämnen

Programmera din Arduino med en Android-enhet via Bluetooth

Hej världen, i detta Instructable jag vill visa dig, hur du programmerar din Arduino Uno med din Android-enhet via Bluetooth. Det är mycket enkelt och så billig. Det ger oss också möjlighet att programmera vårt Arduino där allt vi vill över trådlöst...

Android och Arduino SMS-baserade Home Automation

Nyligen fick jag en relativt billig Kvadranten Band GSM/GPRS-modul för att spela med. Det är en SIM800L modul, och kommunicerar med alla micro via en seriell port. Det kom med en panel mount antenn.Jag beslutade att bygga ett enkelt SMS Controller sy...

Arduino temperaturreglerade Fan

Jag och några medlemmar har beslutat att för sommaren, skulle det vara fördelaktigt att skapa en fläkt som tänds vid 70 grader Fahrenheit och fortsätter att öka i intensitet med värmen. Så det är vad vi gjorde. :)Steg 1: Gears Det första vi laser skä...

Sable 2015 CNC + Arduino + GRBL = LunchBox CNC

Detta är min 2: a Instructable och min 2nd Arduino powered CNC, den här gången jag upp svårighetsgraden genom att besluta att göra en själv innehöll CNC enhet av design min egen elektronik kapslingar och placeringar.Stegen i detta Instructable är mer...

Arduino kontrollerade Beehive Fumigator / Air Freshener

Inom det relativa kaoset av mina inhemska arrangemang har jag en liten oas i perfekt ordning. En sak som jag kan kalla "organiserade" och "fullt fungerande". En sak jag kan röra och vet att det är tillförlitliga och färdiga för åtgärde...

Hemmabyggd (DIY) CNC router - baserade Arduino (GRBL)

Redan för några var månader eller år, jag planerar att bygga mitt eget CNC fräsmaskin. Nu bestämde jag mig för det var tid att göra det! Jag läser mycket om andra DIY projekt och till slut jag gillade designen från Arduino CNC intstructable som jag h...

12 tim binär klocka, timmar och minuter bara, DS1307 RTC, i2C, Arduino-Nano

Ett tag nu har jag velat göra en binär klocka, men efter att ha tittat jag bestämde mig något bara lite annorlunda. Så jag beslöt att endast visar timmar och minuter och endast visa en 12 timmars klocka, innebär detta du bara behöver 3 kolumner och m...

Arduino 7-Seg Display Clock

Detta är en Auduino klocka gjorde med Sunfounder kit. Detta är en riktigt cool projekt och lätt att göra!Steg 1: material Endast 9 material krävs för montering av arduino powered klockanSkärbrädaSladdarUSB-kabelTråd-kontakterCardstock boxSju segment...

Arduino binär klocka med LED-matris

Denna webbplats har många fina inlägg som beskriver byggandet av armbandsur. Jag är oerhört skakig, emellertid, och har svårt med någon lödning. Jag ville därför göra mig från en 8 x 8 MAX7219-kontrollerade ledde matrisen.Steg 1: Läsa BCD binär klock...

Arduino klockan

Ahmed Mohamed gjorde en väckarklocka som misstog för en bomb. Poliser trodde inte honom när han sa till dem att det inte var en bomb, men en väckarklocka. I min klass kände vi att antagandet var orättvist och för att visa vårt stöd vi skapat klockor...

Arduino IoT väder klocka

I detta Instructable kommer vi att bygga en klocka som även visar i och utanför klimatförhållanden.Jag brukade ha en cool liten klocka som, förutom talande tiden, visas även temperaturen i huset, datumet och den utvändiga temperaturen via en sensor f...

Arduino VFD Display klocka handledning - en Guide till VFD displayer

... + Lite om VFDsMinns du (fortfarande) visning av din gamla CD-spelare, HiFi system eller bil radio? Har du någonsin märkt displayerna används på din lokala mataffär som visar du skannade objektet och priset för det?Dessa skärmar har en karakterist...

Montering av "Kloka klockan 2" (Arduino-baserad väckarklocka med massor av extra funktioner)

denna handledning visar hur du monterar kitet för Wise klockan 2, ett öppen källkodsprojekt (hårdvara och mjukvara).En komplett Klok klockan 2 kit kan köpas här.Sammanfattningsvis är detta vad Wise klockan 2 kan göra (i den aktuella öppna källa mjukv...

Berlin klocka, Arduino Nano, DS1307 Realtidsklocka. 74HC595N 8-bitars skiftregister.

För en tid nu har jag ville bygga en Berlin klocka. Jag vet inte riktigt varför? Jag gillar bara "annorlunda" tillvägagångssätt till talande tiden.Så hur fungerar det?Börjar på botten finns 4 gul lyser varje ljus representerar 1 minut, så om det...

BookClock - Arduino-baserad klockan i en kartong

detta är den senaste (och billigaste ännu) Wise klocka familjemedlem.(Som en snabb resumé, de andra medlemmarna i familjen Wise klocka är, hittills, glaskupol Wise klocka och Wise klockan 2. De är "kloka" eftersom, tillsammans med tid, de också...

Bygga IllyClock - baserade Arduino väckarklocka i en kaffe kan

uppdaterad augusti 4, 2011En strömlinjeformad version är nu beskrivs här.Syftet med detta projekt är att bygga en väckarklocka som liknar den som presenteras i videon nedan.Bredvid inhägnad, den ursprungliga inslaget i IllyClock visar tiden i färger:...

Cwik klocka v1.0 - An Arduino binär klocka

ÖversiktDetta är en guide till att bygga en Arduino-driv klocka som använder lysdioder för att Visa 24-timmarsformat (timmar och minuter) som binära siffror, en analog mätare att Visa sekunderna, en switch för att växla mellan tidsvisning och tidsins...

Digital/Analog klocka - Arduino + PaperCraft

i detta instructable vi kommer att återskapa en klocka inspirerad av Alvin Aronson ursprungliga design. När jag först såg denna klocka som jag var mycket imponerad av hur ren en elegant design var jag omedelbart ville återskapa denna effekt.Alvin Aro...

E-checkar klocka med Arduino Yun och hur returneras olästa e-postmeddelanden som ett heltal.

I denna video vi kommer att använda en Arduino Yun (eller leonardo med en wifi sköld) för att kontrollera din e-post konto (eller valda etikett) och returnera antalet olästa e-postmeddelanden som ett heltal som ska användas i ett annat projekt eller...