INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Servo mit 2 poti
01.01.2014, 09:08
Beitrag #9
RE: Servo mit 2 poti
Hallo Mad
In deinem Programm wird "Standgas" gegeben und dann direkt "Schalter1" angefahren,das gibt dann die nervösen Zuckungen an dem Servo.Du solltest die Schalter so abfragen,daß nur EINE Aktion ausgeführt wird !
So müsste es gehen:

#include <LiquidCrystal.h>
#include <Servo.h>

//lcd (rs, rw, enable, D4, D5, D6, D7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
const int inputPin1 = 14; //Eingang Schalter 1
const int inputPin2 = 15; //Eingang Schalter 2
const int ledPin = 13;
Servo myservo;

int potPin = A8; //deine Belegung
int potPin1 = A9;
int potPin2 = A10;
/*int potPin = A2; //meine Belegung
int potPin1 = A3;
int potPin2 = A4; */

int val;
int val1;
int val2;


void setup(){
pinMode(inputPin1, INPUT); //Schalter 1
pinMode(inputPin2, INPUT); //Schalter 2
pinMode(ledPin, OUTPUT);
lcd.begin(16, 2); // LCD-Setup: Anzahl Zeichen, Anzahl Zeilen
lcd.setCursor(3, 1);
lcd.print("Welcome");
delay(4000);
lcd.clear();
myservo.attach(20);
myservo.write(0);
}

void loop(){
int val1 = digitalRead(inputPin1);
int val2 = digitalRead(inputPin2);

if (val1 == HIGH) //Schalter 1
{
digitalWrite(ledPin, HIGH);
val1 = map(analogRead(potPin1), 0, 1023, 0, 99); // Skalieren auf 0-180 Grad
lcd.setCursor(0, 0);
lcd.print("Poti 1:");
lcd.setCursor(8, 0);
lcd.print(val1);
myservo.write(val1); // Sollwert für Servoposition schreiben
delay(15);
}
else if (val2 == HIGH) //Schalter 2
{
digitalWrite(ledPin, HIGH);
val2 = map(analogRead(potPin2), 0, 1023, 0, 99); // Skalieren auf 0-180 Grad
lcd.setCursor(0, 1);
lcd.print("Poti 2:");
lcd.setCursor(8, 1);
lcd.print(val2);
myservo.write(val2); // Sollwert für Servoposition schreiben
delay(15);
}
else //kein Schalter, also Standgas
{
val = map(analogRead(potPin), 0, 1023, 0, 20); // Skalieren auf 0-180 Grad
myservo.write(val); // Sollwert für Servoposition schreiben
delay(15);
digitalWrite(ledPin, LOW);
}
}

Ich hoffe das hilft weiter und ein frohes neues Jahr.
Ralf
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.01.2014, 13:24
Beitrag #10
RE: Servo mit 2 poti
danke für deine mühe.
bis schalter 1 klappt alles.
aber schalter 2 und das dazugehörige poti bewirken leider nichts.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
01.01.2014, 17:29
Beitrag #11
RE: Servo mit 2 poti
Hallo Mad
habe die Schaltung auf einem Uno aufgebaut und dieses Programm funktioniert (mit Servo !) einwandfrei.
Die mit "*****" gekennzeichneten Stellen mußt du wieder auf dein Board anpassen.


// die mit "*****" gekennnzeichneten Zeilen+Werte musst du für dich
// wieder aktivieren !!!
#include <LiquidCrystal.h>
#include <Servo.h>

//lcd (rs, rw, enable, D4, D5, D6, D7)
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
const int inputPin1 = 10; //*****14; //Eingang Schalter 1
const int inputPin2 = 11; //*****15; //Eingang Schalter 2
const int ledPin = 12; //*****13;
Servo myservo;

/*
int potPin = A8; //*****deine Belegung
int potPin1 = A9;
int potPin2 = A10;
*/

int potPin = A2; //*****meine Belegung
int potPin1 = A3;
int potPin2 = A4;

int val;
int val1;
int val2;


void setup(){
pinMode(inputPin1, INPUT); //Schalter 1
pinMode(inputPin2, INPUT); //Schalter 2
pinMode(ledPin, OUTPUT);
lcd.begin(16, 2); // LCD-Setup: Anzahl Zeichen, Anzahl Zeilen
lcd.setCursor(3, 1);
lcd.print("Welcome2");
delay(4000);
lcd.clear();
myservo.attach(3); //*****(20);
myservo.write(10);
}

void loop(){
int val1 = digitalRead(inputPin1);
int val2 = digitalRead(inputPin2);

if (val1 == HIGH) //Schalter 1
{
digitalWrite(ledPin, HIGH);
val1 = map(analogRead(potPin1), 0, 1023, 0, 99); // Skalieren auf 0-180 Grad
lcd.setCursor(0, 1);
lcd.print("Poti 1:");
lcd.setCursor(8, 1);
lcd.print(val1);
lcd.print(" ");
myservo.write(val1); // Sollwert für Servoposition schreiben
delay(15);
}
else if (val2 == HIGH) //Schalter 2
{
digitalWrite(ledPin, HIGH);
val2 = map(analogRead(potPin2), 0, 1023, 0, 99); // Skalieren auf 0-180 Grad
lcd.setCursor(0, 1);
lcd.print("Poti 2:");
lcd.setCursor(8, 1);
lcd.print(val2);
lcd.print(" ");
myservo.write(val2); // Sollwert für Servoposition schreiben
delay(15);
}
else //kein Schalter, also Standgas
{
val = map(analogRead(potPin), 0, 1023, 0, 20); // Skalieren auf 0-180 Grad
lcd.setCursor(0, 1);
lcd.print("Poti 0:");
lcd.setCursor(8, 1);
lcd.print(val);
lcd.print(" ");
myservo.write(val); // Sollwert für Servoposition schreiben
delay(15);
digitalWrite(ledPin, LOW);
}
val = myservo.read();
lcd.setCursor(0, 0);
lcd.print("Servo :");
lcd.setCursor(8, 0);
lcd.print(val);
lcd.print(" ");
}

Wenn es nicht funzt,dann teste mal deinen Schalter2 und den Anschluss (richtiger) ans Board.
Viele Grüße, Ralf
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Servo mit zwei Tasten steuern Lothar 18 17.960 05.12.2016 20:16
Letzter Beitrag: Madmax251978
  Arduino Gimbal mit Servo Rareer 14 4.710 12.05.2015 14:02
Letzter Beitrag: Bitklopfer
  Servo mit dem Arduino ansteuern hans-gander 2 2.766 23.03.2014 15:18
Letzter Beitrag: Bitklopfer
  Servo steuern vom PC coctoroge 11 7.980 04.02.2014 19:49
Letzter Beitrag: Sloompie
  Servo arduino900 10 6.945 19.12.2013 19:26
Letzter Beitrag: arduino900

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste