was halt komisch ist das wen ich den arduino nano an USB angeschlossen habe sprich an Serial funktioniert alles gut wen ich ihn ohne Laufen lasse macht er Probleme
hir noch mal den Aktuellen Code
Code:
/*
Analog Input
*/
#include "OneButton.h"
#define MOTOR_1 A2
#define MOTOR_2 A4
#define POTI A0
#define PWM 9
#define TASTER 5
#define LED 3
bool sto = 0;
//void clickedIt();
OneButton button(TASTER, true);
//int poti = A0; // select the input pin for the potentiometer
int poti_Value = 0; // variable to store the value coming from the sensor
int poti_prozent = 0;
bool sicherheit = 1;
void setup() {
// declare the ledPin as an OUTPUT:
//pinMode(ledPin, OUTPUT);
Serial.begin(9600);
//pinMode(MOTOR_1,OUTPUT);
//pinMode(MOTOR_2,OUTPUT);
pinMode(LED,OUTPUT);
//pinMode(TASTER,INPUT_PULLUP);
pinMode(MOTOR_1,OUTPUT);
pinMode(MOTOR_2,OUTPUT);
pinMode(PWM,OUTPUT);
digitalWrite(LED, LOW);
poti_prozent = 4;
// Sicherheitsschaltung Poti auf 0 und Motor Aus
//poti_Value = analogRead(POTI);
//poti_prozent = map(poti_Value, 0,1023, 0,100);
//pinMode(TASTER, INPUT);
button.attachClick(clickedIt);
button.attachDoubleClick(doubleClickedIt);
while( poti_prozent >= 3 )
{
Serial.println("Poti zu Hoch ! ! !");
digitalWrite(MOTOR_1, HIGH);
digitalWrite(MOTOR_2, HIGH);
digitalWrite(LED, HIGH);
delay(60);
poti_Value = analogRead(POTI);
poti_prozent = map(poti_Value, 0,1023, 0,100);
digitalWrite(LED, LOW);
delay(60);
}
}
bool Drehrichtung = true;
void loop() {
button.tick();
stopp();
//void clickedIt();
int pwmSpeed;
//delay(200);
//digitalWrite(MOTOR_1, HIGH);
//digitalWrite(MOTOR_2, HIGH);
//delay(200);
if(Drehrichtung == true)
{
button.tick();
stopp();
//void clickedIt();
// LED Drehrichtung Rechts
digitalWrite(LED, LOW);
poti_Value = analogRead(POTI);
poti_prozent = map(poti_Value, 0,1023, 0,100);
// Ausgabe
Serial.print("Rechts Poti = ");
Serial.print(poti_prozent);
Serial.println("% ");
// Drehrichtung Rechts
digitalWrite(MOTOR_1, LOW);
digitalWrite(MOTOR_2, HIGH);
// Geschwindigkeit regeln
analogWrite(PWM, poti_Value / 4);
}
else
{
button.tick();
stopp();
//void clickedIt();
// LED Drehrichtung Links
digitalWrite(LED, HIGH);
poti_Value = analogRead(POTI);
poti_prozent = map(poti_Value, 0,1023, 0,100);
// Ausgabe
Serial.print("Links Poti = ");
Serial.print(poti_prozent);
Serial.println("% ");
// Drehrichtung Links
digitalWrite(MOTOR_1, HIGH);
digitalWrite(MOTOR_2, LOW);
// Geschwindigkeit regeln
analogWrite(PWM, poti_Value / 4);
}
}
void clickedIt()
{
Drehrichtung = !Drehrichtung;
digitalWrite(MOTOR_1, HIGH);
digitalWrite(MOTOR_2, HIGH);
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
}
void doubleClickedIt()
{
sto = !sto;
}
void stopp(void)
{
while(sto == true )
{
button.tick();
digitalWrite(MOTOR_1, HIGH);
digitalWrite(MOTOR_2, HIGH);
Serial.println("STOPP!!!");
digitalWrite(LED, HIGH);
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
digitalWrite(LED, LOW);
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
}
}
- - - Aktualisiert - - -
ok hab es jetzt mal mit einer Funktion versucht leider nach einmaligen Drehrichtungswechsel reagiert er nicht mehr auf Tastendruck
Code:
/*
Analog Input
*/
#include "OneButton.h"
#define MOTOR_1 A2
#define MOTOR_2 A4
#define POTI A0
#define PWM 9
#define TASTER 5
#define LED 3
bool sto = 0;
bool drehrichtung = 0;
//void clickedIt();
OneButton button(TASTER, true);
//int poti = A0; // select the input pin for the potentiometer
int poti_Value = 0; // variable to store the value coming from the sensor
int poti_prozent = 0;
bool sicherheit = 1;
void setup() {
// declare the ledPin as an OUTPUT:
//pinMode(ledPin, OUTPUT);
Serial.begin(9600);
//pinMode(MOTOR_1,OUTPUT);
//pinMode(MOTOR_2,OUTPUT);
pinMode(LED,OUTPUT);
//pinMode(TASTER,INPUT_PULLUP);
pinMode(MOTOR_1,OUTPUT);
pinMode(MOTOR_2,OUTPUT);
pinMode(PWM,OUTPUT);
digitalWrite(LED, LOW);
poti_prozent = 4;
// Sicherheitsschaltung Poti auf 0 und Motor Aus
//poti_Value = analogRead(POTI);
//poti_prozent = map(poti_Value, 0,1023, 0,100);
//pinMode(TASTER, INPUT);
button.attachClick(clickedIt);
button.attachDoubleClick(doubleClickedIt);
while( poti_prozent >= 3 )
{
Serial.println("Poti zu Hoch ! ! !");
digitalWrite(MOTOR_1, HIGH);
digitalWrite(MOTOR_2, HIGH);
digitalWrite(LED, HIGH);
delay(60);
poti_Value = analogRead(POTI);
poti_prozent = map(poti_Value, 0,1023, 0,100);
digitalWrite(LED, LOW);
delay(60);
}
}
bool Drehrichtung = true;
void loop() {
button.tick();
stopp();
if(drehrichtung == 1)
{
drehrichtun();
}
//void clickedIt();
int pwmSpeed;
//delay(200);
//digitalWrite(MOTOR_1, HIGH);
//digitalWrite(MOTOR_2, HIGH);
//delay(200);
if(Drehrichtung == true)
{
button.tick();
stopp();
//void clickedIt();
// LED Drehrichtung Rechts
digitalWrite(LED, LOW);
poti_Value = analogRead(POTI);
poti_prozent = map(poti_Value, 0,1023, 0,100);
// Ausgabe
Serial.print("Rechts Poti = ");
Serial.print(poti_prozent);
Serial.println("% ");
// Drehrichtung Rechts
digitalWrite(MOTOR_1, LOW);
digitalWrite(MOTOR_2, HIGH);
// Geschwindigkeit regeln
analogWrite(PWM, poti_Value / 4);
}
else
{
button.tick();
stopp();
//void clickedIt();
// LED Drehrichtung Links
digitalWrite(LED, HIGH);
poti_Value = analogRead(POTI);
poti_prozent = map(poti_Value, 0,1023, 0,100);
// Ausgabe
Serial.print("Links Poti = ");
Serial.print(poti_prozent);
Serial.println("% ");
// Drehrichtung Links
digitalWrite(MOTOR_1, HIGH);
digitalWrite(MOTOR_2, LOW);
// Geschwindigkeit regeln
analogWrite(PWM, poti_Value / 4);
}
}
void clickedIt()
{
drehrichtung = 1;
}
void doubleClickedIt()
{
sto = !sto;
}
void stopp(void)
{
while(sto == true )
{
button.tick();
digitalWrite(MOTOR_1, HIGH);
digitalWrite(MOTOR_2, HIGH);
Serial.println("STOPP!!!");
digitalWrite(LED, HIGH);
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
digitalWrite(LED, LOW);
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
delay(50);
button.tick();
}
}
void drehrichtun(void)
{
Drehrichtung = !Drehrichtung;
digitalWrite(MOTOR_1, HIGH);
digitalWrite(MOTOR_2, HIGH);
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
drehrichtung = 0;
}
ich habe das "button.tick();" noch in der schleife vergessen
Code:
void drehrichtun(void)
{
Drehrichtung = !Drehrichtung;
digitalWrite(MOTOR_1, HIGH);
digitalWrite(MOTOR_2, HIGH);
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
digitalWrite(LED, HIGH);
delay(100);
digitalWrite(LED, LOW);
delay(100);
drehrichtung = 0;
}
wes geht nur sauber wen ich es am PC angeschlossen habe
Lesezeichen