Wie der Titel schon sagt,...
ich komm nicht weiter !
Koennt ihr mal einen Blick drauf werfen und mir eine kleine Hilfestellung geben ?
#define clockPoti A2
int ClockSpeed = 0;
unsigned long clockPrev = 0;
#define gatePoti A3
float gateLenght = 0;
unsigned long gatePrev = 0;
int gatePin = 13;
int greenLed = 12;
int clockIn = 7;
int stepCounter = 0;
bool firstRun = true;
#define STEPS_COUNT 8
int stepsOn1[STEPS_COUNT] = {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};
int stepsOn2[STEPS_COUNT] = {HIGH, LOW, HIGH, LOW, HIGH, LOW, HIGH, LOW};
int stepsOn3[STEPS_COUNT] = {HIGH, LOW, LOW, LOW, HIGH, LOW, LOW, LOW};
int stepsOn4[STEPS_COUNT] = {HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW};
int stepsOn5[STEPS_COUNT] = {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};
int stepsOn6[STEPS_COUNT] = {HIGH, LOW, HIGH, LOW, HIGH, LOW, HIGH, LOW};
int stepsOn7[STEPS_COUNT] = {HIGH, LOW, LOW, LOW, HIGH, LOW, LOW, LOW};
int stepsOn8[STEPS_COUNT] = {HIGH, LOW, LOW, LOW, LOW, LOW, LOW, LOW};
int stepsOff[STEPS_COUNT] = {LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW};
void setup(){
pinMode(greenLed, OUTPUT);
pinMode(clockIn, INPUT);
pinMode(gatePin, OUTPUT);
clockPrev = millis();
Serial.begin(9600);
}
void loop(){
ClockSpeed = analogRead(clockPoti);
gateLenght = analogRead(gatePoti);
if((millis() - clockPrev) > ClockSpeed) {
clockPrev = millis();
digitalWrite(gatePin, HIGH);
gatePrev = millis();
}
digitalRead(gatePin);
if(gatePin == HIGH && firstRun) {
digitalWrite(greenLed, stepsOn2[stepCounter]);
firstRun = false;
}
if((millis() - gatePrev)*1024 > (ClockSpeed * gateLenght)) {
digitalWrite(gatePin, LOW);
}
digitalRead(gatePin);
if(gatePin == LOW && !firstRun) {
stepCounter = (++stepCounter);
Serial.print(stepCounter);
Serial.print(",");
digitalWrite(greenLed, stepsOff[stepCounter]);
firstRun = true;
if(stepCounter < 8) {
loop();
}
else {
while(1);
}
}
}
Die millis() Geschichte mit digitalWrite(gatePin) klappt wunderbar !
Nur hier scheine ich was falsch gemacht zu haben :
digitalRead(gatePin);
if(gatePin == HIGH && firstRun) {
digitalWrite(greenLed, stepsOn2[stepCounter]);
firstRun = false;