Övervaka belastning Feedback-ett ställdon (3 / 5 steg)

Steg 3: Avancerad kodning

Nu när du sett koden, går vi över enskilda avsnitt ge djupare förklaringar.

Först ska vi titta på ett avsnitt av koden i funktionen latchButtons(). Vi kommer att titta på knappen debouncing. När den vänstra knappen trycks, måste tiden efter senaste knapptryckning beräknas. Detta görs genom att använda det senaste värdet som lagrats och anropar funktionen millis() om du vill kontrollera den aktuella tiden. När vi vet att tiden är större då vår debounce tid, kontrollerar funktionen sedan om manöverdonet tillåts att förlänga. Om båda dessa villkor är uppfyllda, kan funktionen fortsätta och göra alla saker relaterade till tryck på knapp.

om (digitalRead (buttonLeft) == låg) //left är framåt
{
currentTimedebounce = millis() - lastButtonpress; / / kolla tid sedan senaste press
om (currentTimedebounce > debounceTime & & dontExtend == false) //once du har utlöst dontExtend, ignorera alla framlänges pressar
{
leftlatch =! leftlatch; / / om motorn är rörliga, stop, om stannade, börja flytta
firstRun = sant; / / ange firstRun flagga att ignorera nuvarande spike
fullyRetracted = false; När du flyttar framåt, är du inte helt indragen
lastButtonpress = millis (); //store tidpunkten för senaste knapptryckning
hemkomst.
} //end om
} //end btnLEFT

Denna nästa avsnitt är while loop inom funktionen motorForward(). Delen att titta på här är de två förseningarna. Loopen startar genom att aktivera den motor controller, och starta motorn. Om det är den första kör dock loopen, finns det en större fördröjning. Denna större försening är att ignorera den nuvarande spike som kommer med start i en motor. När du anger denna försening, vara försiktig och inte sätta den för stor, eftersom det inte finns någon kontroll under det. Om motorn har fastnat av någon anledning, kommer det inte att kunna stoppas tills denna försening är över. Om det inte är den första körningen, finns det en mycket mindre fördröjning.

När motorn är i rörelse, användas getFeedback() för att kontrollera aktuella sensor. firstRun stängs av, så att nästa gång genom öglan den tar små förseningen, snarare än den stora en. Och slutligen, knapparna kontrolleras för att se vilka nya åtgärder bör vidtas.

medan (dontExtend == false & & leftlatch == hög) {
digitalWrite (EnablePin, hög);
analogWrite (PWMPinA, speeed);
analogWrite (PWMPinB, 0); //move motor
om (firstRun == true) delay(firstfeedbacktimedelay);
annat delay(feedbacktimedelay); liten fördröjning att få snabba
getFeedback();
firstRun = false;

latchButtons();
} //end medan

Nästa avsnitt är alla i rutinen getFeedback(). Den rutinmässiga startar genom att läsa den analoga pin ansluten till sensorn, sedan agerar därefter.

Den första som är markerade är om motorn är på det gränser. Koden vet när motorn är på gränsen när den aktuella behandlingen är 0. Ibland finns det en falsk behandling, så vi måste ställa in en räknare, så att motorn bara stannar när det är faktiskt på gränsen. Denna del av koden har att räkna till hitLimitsmax innan motorn kommer att sluta. Om det räknas mindre så att disken återställs.

om (CRaw == 0 & & hitLimits < hitLimitsmax) hitLimits = hitLimits + 1.

annat hitLimits = 0; Kontrollera om motorn är på gränsen och aktuellt har slutat

Denna nästa del är precis efter träff gränserna. Om motorn går framåt när det nått gränsen, stängs rightlatch. Om det rörde sig bakåt, stängs leftlatch. Koden är densamma för leftlatch.

om (hitLimits == hitLimitsmax & & rightlatch == hög) {
rightlatch = låg;
hitLimits = 0;
} //end om

Slutligen, den nuvarande gränsen kontrolleras mot det maximala. Om det är över, leftlatch är avstängd, och motorn är inte längre tillåtet att förlänga. Om du vill aktivera förlängning, måste motorn återföras.

om (CRaw > maxAmps) {
dontExtend = sant;
leftlatch = låg; stoppa om feedback är över maximum
} //end om

Nu när vi har gått över koden, kan vi anpassa den efter dina behov.

Se Steg
Relaterade Ämnen

Kontrollera placeringen av ett ställdon med en Analog Sensor

I detta Instructable lär vi dig att använda en analog sensor styra placeringen av ett ställdon. I det här exemplet kommer vi att använda en potentiometer, men du kan använda någon analog sensor. Du kan använda en ljussensor för att flytta ett ställdo...

Spåra en ljuskälla med ett ställdon

.. .eller kanske det borde heta "Med en gammal solcell från en helt korroderade trädgård ljus som en ljussensor". :)I detta instructable, jag ska bygga på min tidigare och visar hur du kan göra ett manöverdon hitta största ljuskällan. Verkligen...

IKEA Hack: fjärrkontroll glida ut TV: N med ett ställdon

Letar du efter ett originellt sätt att dölja din TV? Detta projekt ändrar en befintlig TV skåpet där TV: N är avsedd att monteras på fronten och istället har den glida ut från sidan med hjälp av ett spår linjärt ställdon. Någon form av modulära Medie...

Force Feedback med LCD-skärm

I dagens Instructable, kommer vi att gå över hur man kan övervaka nuvarande av ett ställdon och justera värdena med hjälp av en LCD-skärm. Detta Instructable är en fortsättning till övervaknings belastning Feedback av en manöverdonet Instructable. Vi...

Komma igång med Arduino

I detta Instructable kommer vi att lära grunderna i Arduino mikrokontroller. Det finns redan massor av resurser ute på webben för att komma igång, så detta kommer att vara mer av en hubb för att ansluta till allt. Först kommer vi att tala om vad en A...

Harddisk ställdon Arm smycken

Första gången jag rensad en död hårddisk och fick en närmare titt på alla de snygga blanka bitarna inuti, jag minns en av mina första tankar var: "Jag slår vad det här kan vändas till några coola smycken."Så är det vad jag gjorde.Här är en skriv...

Bli en sol laddare för AA-batterier ett spelkort

jag äger massor av laddningsbara NiMH AA- och AAA-batterier, men mest alltid verkar vara död när jag behöver dem. Så, jag ville ha ett billigt och snabbt sätt att göra batteriladdare som jag kan hålla på mitt skrivbord, så att jag kunde ha en armada...

Förlänga mjuk Robotic ställdon

Mjuk robotics är en ny och ung fält av robotar som använder (oftast) mjuk och kompatibla material i stället för stela och hårda material. De flesta mjuka robotar består av flera mjuka robotic ställdon, varav de flesta är aktiveras av luft. Detta proj...

Fyra steg till att välja rätt linjärt ställdon

Detta instructable är för dem som är nya till linjära manöverdon och som letar efter viss vägledning i att välja ett ställdon för ett projekt. Ett linjärt ställdon är en enhet som producerar rörelse i en rak linje och drivs av en extern energikälla....

Styra tidpunkten för ett manöverdon förslag

I detta Instructable, kommer vi att lära hur du kan styra tidpunkten för ett linjärt ställdon, använder en MegaMoto motorstyrning sköld.För detta projekt behöver du:-1 x RobotPower MegaMoto styrelse-1 x Arduino Uno-1 x linjärt ställdon-1 x 12V strömf...

Komplett Guide för Tech nybörjare

Varje start hörs men om du har motivationen och stark beslutsamhet du kommer att lyckas. De flesta av deltagarna särskilt av deltagarna av engineering vill bygga och göra något. Praktisk erfarenhet av att göra något gör vårt lärande perfekt och hjälp...

Smart energi övervakning & kontrollsystem (Edison inuti)

Power management har varit en av de mest heta ämnena under det senaste decenniet på grund av minskningen av energireserverna. Power stängningen är ett stort problem nu för tiden och det beror på att mycket kraft slösas i industrier. Att minska energi...

Med uttrycket Switch() som sekvensering kontroll

I detta Instructable kommer vi att gå över "switch()" uttalande och dess användning i programmering. Programsatsen switch är ett kraftfullt verktyg för att organisera ditt program, enkelt kan du flytta genom komplexa flödesscheman.I vår switch u...

Hall effekt sensorer 1: Placera kontroll

I detta Instructable kommer vi inlärningen hur till använda avbrott på Arduino för att spåra hall effekt sensorer i en motor att spåra position. Detta är Del1 i en serie i 3 delar, nästa vecka kommer vi lära oss om att synkronisera hastigheten på två...

Billiga OBD2 kommunikation på K-line (ISO 9141-2 och ISO 14230-4)

Detta är bara en annan OBD2 lösning för övervakning av sensorer i en verhicle. Den stöder K-line OBD2 seriell kommunikation mellan en verhicle och en mikrokontroller. Detta K-line meddelande är också känd som ISO 9141-2 eller ISO 14230-4 (även känd s...

Smeka blick: 3D tryckt strukturer med SMA manöverdon

Detta Svårbemästrade är ett försök att skapa en ram för utformningen av formen dynamisk, ändra objektet med SMA manöverdon. Den slutliga avsikten för mig var att designa en interaktiv wearable kallas "Smeka av the Gaze" (för det slutliga resulta...

Batteri Manager med Labjack U3 och KLÄTTRE.

Här är ett enkelt och effektivt sätt att övervaka plus hantera ett batteri. Denna kombination av programvara och maskinvara har jag använt att hantera min hem solar batteribank. Underspänning frånkoppling och belastning återansluta genomförs utan någ...

Min "Nya" Solar Setup

detta är min andra versionen av solenergi. Den första versionen kan ses i min andra instructableJag tog inte bilder som jag byggde denna enhet, eftersom jag var tvungen att göra flera ändringar som jag byggde. Om jag hade detta instructable skulle ha...

Realtime OS / LCD på $12 Discovery ombord

En dag hade jag en universitetsprofessor redo att lära oss studenter en kraftfulla matematiska trick i EE101 - mesh Kretsanalys tror jag. Innan han kommit igång sade han, "Idag, mina elever, jag ger dig en stor pistol." Det fick vår uppmärksamhe...