Servo mit EEprom

Antworten
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Servo mit EEprom

Beitrag von e69-fan »

Hallo Franz,
jetzt gibt es den vom MicoBahner überprüften Sketch:

Code: Alles auswählen

/* https://stummiforum.de/viewtopic.php?f=21&t=178411
 */

#include <MobaTools.h>
#include <EEPROM.h>


// Die Taster müssen so angeschlossen sein, dass der Eingang bei gedrücktem
// Taster auf LOW (=0) geht. Ansonsten muss im loop auf HIGH abgefragt werden

const int tasterPin1 = 2;    // Taster1 Pin 2
const int tasterPin2 = 3;    // Taster2  Pin 3
const int servoPin  =  9;    // Anschluß für den Servo, möglich sind 9 oder 10

// bei Werten, die sich im Programm nie verändern, sollte immer 'const' vorangestellt
// werden

//gegen Sevozucken Widerst.5K von Servosteuerung zu Vcc geschaltet


int tasterStatus1, tasterStatus2;
MoToServo meinServo;

void setup() {
    pinMode(tasterPin1, INPUT_PULLUP);   //tasterPin1 (Pin 2)
    pinMode(tasterPin2, INPUT_PULLUP);   //tasterPin2 (Pin 3)
    
    meinServo.attach(servoPin, true );   //Servo an Pin 9
    meinServo.setSpeed(5);               //Das ist ein neuer Aufruf, mit dem die Geschwindigkeit
                                         //eingestellt wird. Je größer die Zahl, umso größer
                                         //die Geschwindigkeit. Bei 0 (defaultwert) verhält es
                                         //sich wie bei der Standard Bibliothek
    meinServo.write(EEPROM.read(0));     //"bewege" Servo zur letzten im EEPROM gespeicherten Position
}

void loop() {
    tasterStatus1 = digitalRead(tasterPin1);
    tasterStatus2 = digitalRead(tasterPin2);

    if (tasterStatus2 == HIGH ) {
        meinServo.write(50);             //wird langsam  drehen
        EEPROM.update(0, 50);            //schreibe Zielposition ins EEPROM
        delay(100);
    }

    if (tasterStatus1 == HIGH) {
        meinServo.write(120);            //wird langsam drehen
        EEPROM.update(0, 120 );          //schreibe Zielposition ins EEPROM
        delay(100);
    }

    delay(20);

}
:(V):
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Servo mit EEprom

Beitrag von Admin »

Ahhhh, danke. Muss ich mich die Tage mal dran setzen. Dass ich den Umgang mit dem Thema auch mal lerne. Speichern im EEprom will ich mir schon lange mal reinziehen.

Grüße aus dem heute Sonnigen Ohlstadt
Franz :)
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Servo mit EEprom

Beitrag von Admin »

Ich habe es mal getestet. Das ist recht einfach. Aber ich muss da mal weiter Spinnen. Da gibt es sicher noch Abfragemöglichkeiten wie groß der EEProm ist, und vielleicht wie weit er belegt ist. Muss ich mal kucken :)

Ich habe da jetzt nur mal schnell eine Display-Ausgabe mit rein gemacht, dass ich den gespeicherten Wert auch ausgeben kann. Muss ich mir mal die Schlüßelwort Liste holen und Testen was ich für wichtig halte.

Hier das Programm mit der kleinen Änderung, die ich gemacht habe, wegen des Display´s.

Code: Alles auswählen

/* https://stummiforum.de/viewtopic.php?f=21&t=178411
*/

#include <MobaTools.h>
#include <EEPROM.h>

#include <LiquidCrystal_I2C.h> // LCD Display
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

// Die Taster müssen so angeschlossen sein, dass der Eingang bei gedrücktem
// Taster auf LOW (=0) geht. Ansonsten muss im loop auf HIGH abgefragt werden

const int tasterPin1 = 2;    // Taster1 Pin 2
const int tasterPin2 = 3;    // Taster2  Pin 3
const int servoPin  =  9;    // Anschluß für den Servo, möglich sind 9 oder 10

// bei Werten, die sich im Programm nie verändern, sollte immer 'const' vorangestellt
// werden

//gegen Sevozucken Widerst.5K von Servosteuerung zu Vcc geschaltet


int tasterStatus1, tasterStatus2;
MoToServo meinServo;

void setup() {
  pinMode(tasterPin1, INPUT_PULLUP);   //tasterPin1 (Pin 2)
  pinMode(tasterPin2, INPUT_PULLUP);   //tasterPin2 (Pin 3)

  lcd.begin(20, 4);
  lcd.backlight();
  lcd.clear();
  lcd.setCursor (0, 0);
  lcd.print (F("Gesp.Pos. "));

  meinServo.attach(servoPin, true );   //Servo an Pin 9
  meinServo.setSpeed(5);               //Das ist ein neuer Aufruf, mit dem die Geschwindigkeit
  //eingestellt wird. Je größer die Zahl, umso größer
  //die Geschwindigkeit. Bei 0 (defaultwert) verhält es
  //sich wie bei der Standard Bibliothek
  meinServo.write(EEPROM.read(0));     //"bewege" Servo zur letzten im EEPROM gespeicherten Position
  lcd.setCursor (11, 0);
  lcd.print(EEPROM.read(0));
}
void loop() {
  tasterStatus1 = digitalRead(tasterPin1);
  tasterStatus2 = digitalRead(tasterPin2);

  if (tasterStatus2 == HIGH ) {
    meinServo.write(50);             //wird langsam  drehen
    EEPROM.update(0, 50);            //schreibe Zielposition ins EEPROM
    delay(100);
  }

  if (tasterStatus1 == HIGH) {
    meinServo.write(120);            //wird langsam drehen
    EEPROM.update(0, 120 );          //schreibe Zielposition ins EEPROM
    delay(100);
  }

  delay(20);

}
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Servo mit EEprom

Beitrag von e69-fan »

Hallo Franz,

ich melde mich bei den Aktiven zurück - alles gut verlaufen. Also Ärmel hoch und weiter geht es.

Ich möchte den EEProm-Sketch für weitere Servos erweitern und die Werte im Display anzeigen lassen.

Wie muss ich erweitern?

servoPin9:
EEPROM.update(0, 50);
EEPROM.update(0, 120 );
----------------------------------------------------------------------------------------
servoPin10:
EEPROM.update(1, 50);
EEPROM.update(1, 120);

Müsste so stimmen oder ??? :???:
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Servo mit EEprom

Beitrag von Admin »

e69-fan hat geschrieben: Sa 8. Mai 2021, 08:28 ich melde mich bei den Aktiven zurück - alles gut verlaufen. Also Ärmel hoch und weiter geht es.
Was heißt das eigentlich? Warst du eine Zeit lang platt? Durftest du auch beim Dock antretten?

Schönen Tag, servus
Franz
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Servo mit EEprom

Beitrag von Admin »

Wie schauts da aus. Hast du schon erweitert. Und hast du schon diese EEproms von denen wir geredet haben?

Franz :(V):
Benutzeravatar
e69-fan
Beiträge: 282
Registriert: Mi 20. Jan 2021, 10:32
Wohnort: Murnau am Staffelsee

Re: Servo mit EEprom

Beitrag von e69-fan »

Hallo Franz,

Danke der Nachfrage.
Wie schauts da aus.
Mit den neuen Tropfen geht es besser. :(V):

Ich versuche noch das EEprom zu verstehen:

Also ich habe von der Servostellung Servo 1 - 2 Werte: Geradeaus - 40; Abzweig - 120;

Wie muss ich ins EEprom schreiben:

Code: Alles auswählen

  meinServo1.write(40);             //wird langsam  drehen
  EEPROM.update(0, 40);            //schreibe Zielposition ins EEPROM
  

Code: Alles auswählen

    meinServo1.write(120);           //wird langsam drehen
    EEPROM.update(1, 120 );        //schreibe Zielposition ins EEPROM


Bei "EEPROM.update(0, 120 ); " ist doch 0 die Adresse und 120 der Wert.

Die nächsten Werte würden dann in Adresse 1, 2, 3, fortlaufend hineingeschrieben werden.
Beim Abfragen wird dann nur die jeweilige Adresse abgerufen.

Oder bin ich jetzt völlig schief?


:oops:

PS. Hast Du schon die erste Probefahrt mit dem Motorrad hinter Dir?
Grüße aus der Heimat der E69
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Servo mit EEprom

Beitrag von Admin »

Ja, so ist es.
Hier z.B.

Code: Alles auswählen

meinServo.write(EEPROM.read(0));     //"bewege" Servo zur letzten im EEPROM gespeicherten Position
ist die Ausgabe aus dem Speicherplatz "0" direkt an den Servo.
Benutzeravatar
Admin
Administrator
Beiträge: 1196
Registriert: Mo 20. Apr 2020, 09:47
Wohnort: 82441 Ohlstadt
Kontaktdaten:

Re: Servo mit EEprom

Beitrag von Admin »

Wie klappt bei dir? Alles gut?
Antworten

Zurück zu „Hardware / Schaltungstechnik“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast