Základní zapojení a program, který ukládá pozice serva do EPROM v Arduino NANO s následním vyvoláním a nastavením uložených pozic.
Zapojení velmi jednoduché a využívá standardních součástek a vlastností Arduino NANO. Hlavním úkolem příkladu je uložení pozic servomotoru, který se nastavuje pomocí potenciometru do EPROM v Arduino NANO. Po uložení je lze opětovně vyvolat a do těchto pozic, stisknutím přepínacího tlačítka opětovně nastavit.
Součástky
- Arduino NANO
- Potenciometr (Pot)
- 3xTlačítko (Btn1-3)
- 3xRezistor 10kOhm
- Servomotor
- Vodiče
Zapojení
Sketch
#include < Servo.h >
#include < EEPROM.h >
int posServo;
int aktPosMemA;
int aktPosMemB;
int servoPin = 9;
int servoDelay =80;
int buttonPinA = 6;
int buttonPinB = 7;
int buttonPinC = 8;
int potRead;
int potPin = A0;
int readingBtnA=0;
int readingBtnB=0;
int readingBtnC=0;
int stavS=1;
Servo myServo;
void setup() {
Serial.begin(9600);
pinMode(buttonPinA, INPUT);
pinMode(buttonPinB, INPUT);
pinMode(buttonPinC, INPUT);
myServo.attach(servoPin);
}
void loop() {
readingBtnA = digitalRead(buttonPinA);
readingBtnB = digitalRead(buttonPinB);
readingBtnC = digitalRead(buttonPinC);
delay(servoDelay);
potRead = analogRead(potPin);
posServo = (170./1023.)*potRead;
if(readingBtnA == HIGH){
myServo.write(posServo);
delay(servoDelay);
EEPROM.write(1, posServo);
}
if(readingBtnB == HIGH){
myServo.write(posServo);
delay(servoDelay);
EEPROM.write(2, posServo);
}
if(readingBtnC == HIGH && stavS==1){
aktPosMemA=EEPROM.read(1);
delay(servoDelay);
myServo.write(aktPosMemA);
stavS=2;
delay(servoDelay);
}else if(readingBtnC == HIGH && stavS==2){
aktPosMemB=EEPROM.read(2);
delay(servoDelay);
myServo.write(aktPosMemB);
stavS=1;
delay(servoDelay);
}
// Serial.println("Ulozena pozice I Ulozena pozice II Pozice tlacitka I Pozice tlacitka II Stav prepinaciho tlacitka");
Serial.print(aktPosMemA);
Serial.print(" ");
Serial.print(aktPosMemB);
Serial.print(" ");
Serial.print(readingBtnA);
Serial.print(" ");
Serial.print(readingBtnB);
Serial.print(" ");
Serial.print(readingBtnC);
Serial.print(" ");
Serial.println(stavS);
}
Jak to funguje?
Nejdříve se musí nastavit krajní pozice serva. To se provede tak, že se stiskne tlačítko Btn1 a otáčí se potenciometrem Pot. Tím se mění pozice servomotrou. Po puštění tlačítka Btn1 se uloží do paměti pozice serva. Stejný postup je i pro tlačítko Btn2, tj. držíme stisknuté tlačítko Btn2 otáčíme potenciometrem a po nastavení pozice tlačítko Btn2 pustíme a pozice se zapíše do paměti. Přepínání mezi oběma pozicemi se provádí tlačítkem Btn3. Při jeho opakovaném stistnutí se střídavě načítají uložené pozice servomotoru a ten se podle nich nastavuje.