moin,
also ich programmiere erst seit kurzem mit Arduino Nano.
Daß das etwas Anderes ist als Java mit Datenbankansprache, habe ich schnell bemerken müssen..
Es geht um eine Moba-Schranke.
Finde den Grund Nicht, warum sich im nach folgenden Code die Variable val_g2 (Taster) Nicht mehr auf den vom Pullup erzwungenen Wert 1 zurücksetzen läßt, die Variable vom Geber 1 val_g1 (Taster) schon.
Der Servo funzt einwandfrei.
//- sweep_own_version1.ino
//- written by W.W.Fietz Hofbieber
//- lasteduted: 06.09.2021
//- Servo-Tester
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int led_red = 6;
int led_yellow = 7;
int led_green = 8;
int geber1 = 5; //-Taster
int geber2 = 6; //-Taster
int val_g1 = 0; //-Wert in geber1
int val_g2 = 0; //-Wert in geber2
int pos = 0;
int maxpos = 135;
int startpos = 45;
int stepp = 5;
void setup()
{
Serial.begin(9600);
pinMode(led_red, OUTPUT);
pinMode(led_yellow, OUTPUT);
pinMode(led_green, OUTPUT);
pinMode(geber1,INPUT_PULLUP);
pinMode(geber2,INPUT_PULLUP);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
//myservo.write(0);
val_g1 = digitalRead(geber1);
val_g2 = digitalRead(geber2);
show_vals();
if(val_g1 == 0)
{
schranke_schliessen();
Serial.println(pos);
delay(1000);
}
//-delay(1000);
if(val_g2 == 0)
{
schranke_oeffnen();
Serial.println(pos);
delay(1000);
}
val_g1 = 1;
val_g2 = 1;
show_vals();
}
void schranke_schliessen()
{
digitalWrite(led_red, HIGH);
for (pos = startpos; pos <= maxpos; pos += stepp)
{ // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(30); // waits 15ms for the servo to reach the position
}
digitalWrite(led_red, LOW);
}
void schranke_oeffnen()
{
digitalWrite(led_green, HIGH);
for (pos = maxpos; pos >= startpos; pos -= stepp)
{ // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(30); // waits 15ms for the servo to reach the position
}
digitalWrite(led_green, LOW);
}
void show_vals()
{
//- der print-Befehl ist Nicht identisch mit dem von Standard-C oder Standard-Java !
//- 2. Parameter ist hier für das Ausgabeformat, nicht für nen numerischen Wert zur Ausgabe !
Serial.print(" G1 :");
Serial.print(val_g1);
Serial.print(" G2 : ");
Serial.println(val_g2);
}
hab ich Tomaten auf den Augen ?
ist ein Pin - evtl der für Geber2 Nr 6 ungeeignet ?
momentan geht der Servo zwischen vorgegebenen Start- und Endpositionen
rhythmisch hin und her, statt in einer Position zur verharren..
habe beide Taster elektrisch überprüft, funktionieren ok, kein Klemmen o.ä.