3D-miljö Laser Scanner från början (3 / 7 steg)
Steg 3: Arduino Program
Allt vi gör här i Arduino är talande stegmotor att flytta till en viss vinkel och sedan flytta tillbaka igen. Samtidigt gör detta skickas det är nuvarande vinkel till bearbetning genom seriell kommunikation. För mer information kan du titta på video eller läsa igenom kommentarerna i koden. Men jag ska beskriva grunderna här. Titta på videon och du kan hoppa över läser detta!
Så om vi hoppa genom alla inställningen-upp och komma rakt in i slingan, måste vi först läsa från första potentiometern och mappa det värdet till fördröjningen mellan varje steg och hastigheten för LCD-skärmen. Förseningar och hastighet är i princip samma sak, förseningen styr hastigheten "spd", också hastigheten, är bara för att Visa hastighet på LCD-skärmen. Vi måste kartlägga andra potentiometern till "angleEnd" som är den mest bortersta vinkel vi vill genom att gå till.
'pass' är antalet gånger som skannern har roteras till sin slutliga vinkel och den är utgångspunkt. Så från 0deg till angleEnd är ett pass och tillbaka till 0deg är två pass. Vi måste kontrollera för att se om antalet överfarter som den har gjort är färre än vad vi vill göra. Om så är fallet, då satt vi stepper's riktning. Vi kan göra detta med hjälp av den modulo funktionen '%', som tillåter oss att kontrollera antalet överfarter är jämnt eller udda. Om 'pass %2' är lika med 0, då det är "pass" är jämn och vi behöver rotera framåt. Om det är lika med 1, sedan är det udda och vi behöver för att rotera det bakåt.
I en slinga som returnerar det till det är utgångspunkt (slingan för ett udda antal passerar), kan vi sätta ett budskap till bearbetning säga till den att vi har gjort ett pass och vill att stoppa vad dess gör det, vi är klara scanning! Så kan vi skicka vinkeln 500 eftersom detta uppenbarligen inte en koordinat eftersom det är mer än 360.
Så har vi ange motors riktning men inte flyttat det någonstans... För att göra det, måste vi sända en kort puls för 300 mikrosekunder till steg stiftet på stepper föraren.
Nästa kan vi öka variabeln 'pass' om vinkeln har gått längre än antingen "angleEnd" eller dess start position (noll grader).
Då vi faktiskt skicka aktuella vinkeln till bearbetning.
Och sedan skriva en massa grejer för LCD-skärmen. Anledningen till att jag satt i en massa svart blanksteg innan varje värde skrivs är så att många som "150" avmarkeras innan ett mindre antal som '5' behov ska visas. Om jag inte gjorde detta, då det skulle dyka upp som "550" eftersom de "150" fortfarande kvardröjande i bakgrunden. Gå bort stora nummer.
Slutligen kan vi sätta i "del" som fördröjning som avgör hur lång tid det måste vänta innan du gör allt detta igen. Detta bestämmer hastigheten på motorn.