ArduinoForum.de - Das deutschsprachige Forum rund um den Arduino
Solar Roboter- Servo dreht nach Stopp nicht weiter - Druckversion

+- ArduinoForum.de - Das deutschsprachige Forum rund um den Arduino (https://www.arduinoforum.de)
+-- Forum: Arduino-Allgemein (/arduino-Forum-Arduino-Allgemein)
+--- Forum: Programmierung (/arduino-Forum-Programmierung)
+--- Thema: Solar Roboter- Servo dreht nach Stopp nicht weiter (/arduino-Thread-Solar-Roboter-Servo-dreht-nach-Stopp-nicht-weiter)

Seiten: 1 2 3 4 5


Solar Roboter- Servo dreht nach Stopp nicht weiter - Stagneth.Alexander - 14.07.2019 10:46

Hallo ArduinoForum,
Ich habe einen kleinen Solar Roboter gebaut, der eine Art Pendeln/Patroullieren durchführt, er pendelt zwischen 30 und 150 Grad (weil er sonst gegen Unterlage drückt) und wenn der Messwert des verbauten Fotowiderstands über 100 fällt, soll er stoppen, damit die Solarzelle oben drauf, genug abbekommt...
Er patroulliert und Messwerte sind auch korrekt, Problem ist nur nachdem er mit s.detach(); gestoppt hat, macht er nicht mit seinem Pendeln weiter, auch nicht, wenn der Messwert wieder zu niedrig ist... Wie ist das lösbar?

Hier ein kleines Bild für euch Smile : https://drive.google.com/file/d/1--1cjtRC3JAzEWECWz7V6_eU5_ZbntFg/view?usp=sharing

Code neu gepostet:
Code:
#include <Servo.h>
Servo s;
int servopin = 13;
const int waitTime = 50;

int eingang= A0;
int sensorWert = 0;

int pos = 90; //Startposition

void setup() {

Serial.begin(9600);
s.attach(servopin);
delay(2000);
}

void loop() {

sensorWert =analogRead(eingang); //AUslesen des Sensorwerts
Serial.print("Sensorwert = " );
Serial.println(sensorWert);

if (sensorWert < 130) { //wenn der Wert unter 130 ist...
  for(pos = 90; pos < 150; pos += 1) {  //drehe dich und suche eine günstige Position dadurch... (erstmal Drehung von 90 (Startgradzahl) zu 150 Grad, weil er sonst überdreht)
    s.write(pos);                  
    delay(50);
sensorWert =analogRead(eingang); //lese noch mal den Wert zwischen jedem Servoschritt aus...
if (sensorWert > 130) { //und wenn zwischen einem Servoschritt zum nächsten der Messwert reicht...
s.detach(); //stoppe den Servo
}
  }


  delay(500); //warte kurz bis zur nächsten Drehung
  for(pos = 150; pos > 30; pos -= 1) {  //diesesmal von 150 zu 30 Grad --> max. zu min. --> ansonsten gleich wie beim 1. Mal
    s.write(pos);                      
    delay(50);
sensorWert =analogRead(eingang);
if (sensorWert > 130) {
s.detach();
}
  }


  delay(500);
  
  for(pos = 30; pos < 90; pos += 1) { //von 30 zu 90, um dann wieder zur ersten Drehung zu kommen
    s.write(pos);                    
    delay(50);
sensorWert =analogRead(eingang);
if (sensorWert > 130) {
s.detach();
}
  }

  
  delay(500);
}

}
//so um die 90- höher ist der normale Wert vorm Monitor mit einem Servo, 10 kOhm und 5V --> bei etwa 30- 50 zu wenig
Bild ist nicht so wichtig[/code]


RE: Solar Roboter- Servo dreht nach Stopp nicht weiter - Tommy56 - 14.07.2019 10:49

(14.07.2019 10:46)Stagneth.Alexander schrieb:  Hallo ArduinoForum,
Ich habe einen kleinen Solar Roboter gebaut, der eine Art Pendeln/Patroullieren durchführt, er pendelt zwischen 30 und 150 Grad (weil er sonst gegen Unterlage drückt) und wenn der Messwert des verbauten Fotowiderstands über 100 fällt, soll er stoppen, damit die Solarzelle oben drauf, genug abbekommt...
Er patroulliert und Messwerte sind auch korrekt, Problem ist nur nachdem er mit s.detach(); gestoppt hat, macht er nicht mit seinem Pendeln weiter, auch nicht, wenn der Messwert wieder zu niedrig ist... Wie ist das lösbar?
Hier ist mein Code dazu: https://pastebin.com/UziNNzGe
Hier ein kleines Bild für euch Smile : https://drive.google.com/file/d/1--1cjtRC3JAzEWECWz7V6_eU5_ZbntFg/view?usp=sharing
Es wäre besser, wenn Du beides direkt als Attachment an den Beitrag anhängst, sonst fehlt es irgendwann.

Wo in Deinem Beitrag ist ein Tutorial oder eine Literatur?

@Mod: Bitte verschieben.

Gruß Tommy


RE: Solar Roboter- Servo dreht nach Stopp nicht weiter - Stagneth.Alexander - 14.07.2019 10:58

@Tommy...
Was meinst du mit Tutorial oder Literatur? Big Grin


RE: Solar Roboter- Servo dreht nach Stopp nicht weiter - Tommy56 - 14.07.2019 11:35

(14.07.2019 10:58)Stagneth.Alexander schrieb:  @Tommy...
Was meinst du mit Tutorial oder Literatur? Big Grin
Schau mal in welche Rubrik Du Deinen Beitrag gestellt hast!
Wer lesen kann, ...

Gruß Tommy


RE: Solar Roboter- Servo dreht nach Stopp nicht weiter - Stagneth.Alexander - 14.07.2019 11:51

(14.07.2019 11:35)Tommy56 schrieb:  
(14.07.2019 10:58)Stagneth.Alexander schrieb:  @Tommy...
Was meinst du mit Tutorial oder Literatur? Big Grin
Schau mal in welche Rubrik Du Deinen Beitrag gestellt hast!
Wer lesen kann, ...

Gruß Tommy
Wie mache ich das? Also die Rubrik ändern...


RE: Solar Roboter- Servo dreht nach Stopp nicht weiter - Bitklopfer - 14.07.2019 12:06

(14.07.2019 11:51)Stagneth.Alexander schrieb:  ....
Wie mache ich das? Also die Rubrik ändern...

schon erledigt.
lgbk Moderator


RE: Solar Roboter- Servo dreht nach Stopp nicht weiter - hotsystems - 14.07.2019 12:21

Wenn du den Servo mit detach von der Arbeit ablöst, kann er nicht mehr funktionieren.
Du brauchst an geeigneter Stelle ein attach oder du baust den Sketch um ohne ihn abzulösen.


RE: Solar Roboter- Servo dreht nach Stopp nicht weiter - MicroBahner - 14.07.2019 14:22

Wie Dieter schon schrieb, ist 'detach' nicht das richtige Kommando um den Servo anzuhalten. Damit deaktivierst Du ihn vollständig.
Wenn Du keinen neuen write-Befehl absetzt, bleibt der Servo von allein an der letzten Position stehen, da braucht es gar keinen extra Befehl zu.