Stap 1: Arduino onderwerpen die in dit Instructable (inc. de Arduino schets)
http://Arduino.CC/en/Main/arduinoBoardUno
Ik heb geprobeerd om de nitty-zanderige problemen die zijn ontstaan in de praktijk. Dit project was gericht op twee grote uitdagingen van de Arduino:
- Servo control - hoe Arduino om scripts te gebruiken om een fysieke vermogen omzetten in iets dat zal de positie van een fysiek voorwerp in 2 dimensies (oogbollen!) mechanisch bepalen
- Een eenvoudige lamp circuit - hoe krijg ik Arduino om te converteren van het signaal van een ingang en er een licht inschakelen en aanpassen van de helderheid (dimmen)
De Arduino-Gemeenschap is immens (zowel in omvang en in behulpzaamheid!). Dit project erkent alle mensen die aan het geven.
De servo scripting is gebaseerd op de 'Servo.h - interrupt-gestuurde Servo library voor Arduino met behulp van 16 bits timers-versie 2'
door Michael Margolis. Respect!
http://code.Google.com/p/Arduino/source/browse/trunk/libraries/servo/servo.h?r=1088
De volledige Arduino schets is hier opgenomen ter referentie. Het ging door 10 versies om naar dit.
Er is niets heel verfijnd. De scriptopmerkingen verklaren wat het doet.
In latere stappen in dit Instructable, heb ik toegevoegd extra uitgebreide opmerkingen over de code in het kader van specifieke stappen (bv. voor de controles van de servo voor de oogbollen)
Dit is een "Ino" schets. Dit is een latere Arduino formaat. Het begon als een ".pde"
/*
Lamp hoofd - arduino schets naar afstandsbediening een afstandsbediening lamp hoofd lezen
Andrew Lewis januari 2012
Deze code is in het publieke domein.
De servo scripting is gebaseerd op Servo.h - Interrupt aangedreven Servo library voor Arduino met behulp van 16-bits timers-versie 2 door Michael Margolis. Respect!
http://code.Google.com/p/Arduino/source/browse/trunk/libraries/servo/servo.h?r=1088
Versie 10
Deze versie maakt gebruik van drie potentiometers (potten) als input wired over de rails van de spanning (variërend van 0 tot 5V).
De variabele uitgangsspanning van elk afzonderlijk beheren 2 servo's en 2 LEDs (bedrijfsresultaat als een paar)
De spanning wordt gelezen door de arduino door 3 analoge ingangen (1 per pot)
De uitgangen van de Arduino aan de servo's zijn van digitale pinnen, die pulse modulatie gebruiken om te controleren de output van de spanning.
De voeding is een standaard 5V 2A eenheid. Het dient te beschikken over dit bedrag van huidige voor het aandrijven van de servo's en de hoogvermogen LEDs
*/
DEFINIËREN VAN LAMPEN
Lamp pin-codes instellen
Const int lampPin = 5; verklaart het pin-nummer van ANALOG INPUT voor signaal - IN
Const int ledPinEyes = 3; het nummer van de pin van de OUTPUT van de LED voor de oogbol LEDs - OUT
int valLamp = 0; variabele te lezen van de analoge ingang van switch tot verrekening van lichten
EINDE LAMPEN
DEFINIËREN VAN SERVOS
#include < Servo.h > / / bevat standaard arduino servo klasse
int delay_val = 5; de servo increment lag (vertraging tussen het toepassen van waarden) toegewezen voor beide servo 's
SERVO 1
Servo myservo; maken van servo-object om te bepalen van een servo
Const int potPin1 = 0; verklaart welke analoge pin wordt gebruikt om de analoge variabele spanning uitgang van potentiometer 1 (besturingselementen servo 1)
int valPot1; variabele te lezen van de waarde van de analoge pin voor servo 1
EINDE SERVO 1
SERVO 2
Servo myservo2; tweede servo-object om te bepalen van een tweede servo maken
Const int potPin2 = 1; verklaart welke analoge pin wordt gebruikt om de analoge variabele spanning uitgang van potentiometer 2 (besturingselementen servo 2)
int valPot2; variabele te lezen van de waarde van de analoge pin voor servo 2
EINDE SERVO 1
SERVO 'S
VOID Setup {}
pinMode (lampPin, INPUT); digitale pin ingesteld als een input voor aan/uit LED ingangssignaal (voor ogen)
pinMode (ledPinEyes, OUTPUT); / / Dit is de output die de lampen in- of uitschakelen verandert
koppelen van servo 's
myservo.attach(5); hecht de servo op pin 5 aan de servo-object
myservo2.attach(9); de tweede servo hecht aan pin 9 op tweede servo-object
}
void loop {}
lampCheck(); / / lamp INPUT te controleren en de helderheid
servoCheck(); Check voor servo ingangen en standpunt dienovereenkomstig aan te passen
}
ongeldig servoCheck() {}
Servo-besturingselementen
Servo 1---
valPot1 = analogRead(potPin1); leest de waarde van de potentiometer (waarde tussen 0 en 1023)
digitalWrite (ledPinJoystick, hoge);
valPot1 = kaart (valPot1, 50, 1000, 0, 179); schaal om het te gebruiken met de servo (waarde tussen 0 en 180)
myservo.write(valPot1); stelt u de positie van de servo volgens de geschaalde waarde
delay(delay_val);
---servo 1 einde
// servo 2 ------------------------
valPot2 = analogRead(potPin2); leest de waarde van de potentiometer (waarde tussen 0 en 1023)
digitalWrite (ledPinJoystick, hoge);
valPot2 = kaart (valPot2, 50, 1000, 179, 0); schaal om het te gebruiken met de servo (waarde tussen 0 en 180)
myservo2.write(valPot2); stelt u de positie van de servo volgens de geschaalde waarde
delay(delay_val);
---servo 2 einde
einde van de servo besturingselementen * /
}
lamp functies * /
ongeldig lampCheck() {}
valLamp=analogRead(lampPin);
valLamp = kaart (valLamp, 20, 1023, 0, 255); schaal om het te gebruiken met de servo (waarde tussen 0 en 180)
valLamp = beperken (valLamp, 0,255);
analogWrite (ledPinEyes, valLamp);
}