noiasca:
Als Anfäger würde ich da nur den kleineren auf den größeren Bereich mappen und mit einem Delay ein wenig verzögern.
Ausgangsbasis analogWrite() - Arduino Reference
Aber eh alles egal, wenn die TO nicht bei der Sache bleiben und nicht zeitnah auf Fragen antworten.
// PWM Ausgabe auf zwei Pins
// Der TO antwortet nicht.
// PWM SIGNAL - Deutsch - Arduino Forum
const int outPin1 = 9; // Ausgabe Pin LED Uno, Nano, Mini 3, 5, 6, 9, 10, 11
const int outPin2 = 10; //
const int analogPin = 3; // potentiometer connected to analog pin 3
uint16_t val = 0; // variable to store the read value
void setup() {
Serial.begin(115200);
Serial.println(F("Einfache PWM Ausgabe auf zwei Pins"));
pinMode(outPin1, OUTPUT);
pinMode(outPin2, OUTPUT);
selftest();
}
void loop() {
val = analogRead(analogPin); // read the input pin
analogWrite(outPin1, val / 4); // analogRead values go from 0 to 1023, analogWrite values from 0 to 255
}
void selftest()
{
const uint16_t steps = 500; // Wie viele Steps macht der größere Bereich aus
const uint16_t stepsSlow = 220; // wie viele Steps macht der kleinere Bereich aus
const uint16_t delayMillis = 4; // Verzögerung in Millisekunden
//uint16_t pwm1 = 0; // brauchen wir nicht, übernehmen wir 1:1
uint16_t pwm2 = 0; // ermittelte PWM für Ausgang 2
uint32_t start = millis(); // Startzeit merken
for (uint16_t i = 0; i <= steps; i++)
{
pwm2 = map(i, 0, steps, 0, stepsSlow); // den kleineren Bereich auf den größeren Mappen
//Serial.print(i); Serial.print(F(" "));Serial.println(pwm2); // nur testausgabe, verlangsamt natürlich den Ablauf
analogWrite(outPin1, i);
analogWrite(outPin2, pwm2);
delay(delayMillis); // Verzögern bevor wir den nächsten Schritt machen mit dirty delay, ist mir hier aber wurscht.
}
for (uint16_t i = steps; i == 0; i--)
{
pwm2 = map(i, 0, steps, 0, stepsSlow);
//Serial.print(i); Serial.print(F(" "));Serial.println(pwm2); // nur testausgabe, verlangsamt natürlich den Ablauf
analogWrite(outPin1, i);
analogWrite(outPin2, pwm2);
delay(delayMillis);
}
uint32_t end = millis(); // Endzeit ermitteln
Serial.print(F("Der Vorgang dauerte gesamt ")); Serial.println(end - start); // nur zum Anpassen der Zeiten notenwendig
}
Keine Ahnung ob ich zu blöd bin für sowas aber krigs nicht gebacken dass es Läuft .. Nadeln schlagen schon mal aus aber eher wild durcheinander