Variabel hastighet bordsskiva Fan (3 / 4 steg)
Steg 3: Arduino
Efter allt blivit 3D ut, kan vi gå vidare till de komponenter som tillåter denna baby att köra. Vi har en micro controller, som är den arduino uno, liksom våra bakbord och 9v batteri.
Jag har skapat ett schema för hur allt ska lägga ut på fritzing, så kolla in följande länk för att se hur man lägger ihop. Kontrollera att du har fritzing laddade ner så att du kan visa schematiskt. Jag har också lagt upp den arduino kod som behövs för att göra allt fungerar men jag kommer gå in mer på djupet här.
http://fritzing.org/projects/Variable-Speed-Tablet...
9v batteriet kommer att ha sin makt tömmas om ansluten till arduino, så lämna det inplugged tills den behövs för teständamål.
Nedan är koden för arduino med mina kommentarer som förklarar vilken varje del gör.
KOD FÖR ARDUINO:
Vi kommer att kontrollera motorn från stift 9. Detta måste vara en PWM-kapabla stift så att vi kan variera hastigheten.
Skapa först konstanterna.
CONST int motorPin = 9; CONST int motorSpeedIn = 0; CONST int ledPin = 10; CONST int ledDial = 2; Dessa är alla pin värden, varje nummer är associerad med en pin-funktion.
int ledBright; int motorSpeed; Detta är bara värden som skall utses senare och bara används som platshållare här.
void setup() / / ställa in koden. Detta tillåter våra pins att läsa och skicka data, beroende på hur vi orientera dem.
{
Ställ in motor PIN-koden är en utgång:
pinMode (motorPin, produktionen); pinMode (ledPin, produktionen); pinMode (ledDial, ingång); pinMode (motorSpeedIn, ingång);
Ställ in serieporten:
Serial.BEGIN(9600); }
void loop() / / här är faktiska loop koden. Eftersom potentiometrar skicka digitala signaler, måste vi konvertera det till en analog numrerar för vår motor och LED att läsa, så vi dela upp det numret av 4. PWM kan bara läsa 0-255
{
motorSpeed = analogRead(motorSpeedIn);
Serial.println(motorSpeed); Denna kod är kommenteras ut, men om du behöver kontrollera din talvärden är ingång, detta kommer produktionen numrerar emot i den seriella monitorn för att övervaka.
motorSpeed = motorSpeed/4.
Serial.println(motorSpeed);
analogWrite(motorPin,motorSpeed);
ledBright = analogRead(ledDial);
ledBright = ledBright/4.
analogWrite(ledPin,ledBright);
Delay(100); Extra fördröjning av 100ms på inte har någon förvirring hända någon anledning med ett momentant värde.
}