Hallo zusammen, ich hoffe das ihr mir weiter helfen könnt.
Ich lese hier das PWM-Signal von einem RC-Empfänger ein. Das PWM-Signal habe ich mir um Serial-Monitor anzeigen lassen. Es liegt zwischen 1000-2000 Impulsen je nach ansteuerung.
Nun zu meiner Frage: Was müsste ich schreiben das mir in einem PWM-Fenster ein Ausgang am Arduino HIGH gesetzt wird?
z.B:
PWM 1400-1600 Ausgang 4 HIGH
PWM 1600-1800 Ausgang 5 HIGH
usw...
Vielleich habt ihr ein Programmierbeispiel für mich
Danke schon mal in vorraus!
void setup() {
pinMode(4, INPUT);
Serial.begin(115200);
}
void loop() {
int pwm1 = pulseIn(4, HIGH);
//Serial.println("PWM-CH1: ");
Serial.println(pwm1);
}
Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.
Gruß Tommy
Hi
Da Du das Abschalten der LED nicht erwähnst - sind spätestens nach einem Zyklus alle LED an - soll Das so?
Also die Beschreibung verbessern - vll. kommst Du ja selber auf eine funktionierende Lösung, Die wir dann mit Dir verbessern.
mfG
postmaster-ino:
Hi
Da Du das Abschalten der LED nicht erwähnst - sind spätestens nach einem Zyklus alle LED an - soll Das so?
Also die Beschreibung verbessern - vll. kommst Du ja selber auf eine funktionierende Lösung, Die wir dann mit Dir verbessern.
mfG
OK, gebe mir Mühe und setze hier gleich nochmal einen Post drunter
Also, ich möchte den PWM-Impuls-Bereich in 5 Bereiche unterteilen.
- 1000-1200
- 1200-1400
- 1400-1600
- 1600-1800
5 .1800-2000
Wenn PWM-Bereich 1. erreicht wird, soll ein Ausgang auf High gesetzt werden.
Wird der PWM-Bereich 1. verlassen, soll der Ausgang wieder auf LOW gesetzt werden und der dem entsprechende Ausgang von PWM-Bereich 2. auf High gesetzt werden..... usw....
int PWMpin1 = 4;
int LEDout1 = 6;
void setup() {
pinMode(PWMpin1, INPUT);
pinMode(LEDout1, OUTPUT);
Serial.begin(115200);
}
void loop() {
int pwm1 = pulseIn(PWMpin1, HIGH);
Serial.println(pwm1);
if((pwm1 < 1200)&&(pwm1 > 1400))
{
digitalWrite(LEDout1, HIGH);
}
else
{
digitalWrite(LEDout1, LOW);
}
}
5 Bereiche bei 2 Schaltzuständen macht keinen Sinn, es sei denn, Du verschweigst etwas Wesentliches.
Gruß Tommy
Tommy56:
5 Bereiche bei 2 Schaltzuständen macht keinen Sinn, es sei denn, Du verschweigst etwas Wesentliches.
Gruß Tommy
Naja das was ich bis jetzt geschrieben habe, ist erstmal nur so zum testen gewesen ob das überhaupt funktioniert. Das müsste mann dann natürlich noch erweitern
Dann mache erst mal eine vollständige Planung, was Du überhaupt willst.
Schau Dir mal Bereiche beim gcc an.
switch(pwm1) {
case 1000 ... 1199:
digitalWrite(LEDout1, HIGH);
break;
case 1200 ... 1399:
digitalWrite(LEDout1, LOW);
break;
// usw.
default:
// Außerhalb des Bereichs
}
Gruß Tommy
if((pwm1 < 1200)&&(pwm1 > 1400))
Das wird wohl NIE greifen - die Variable kann nicht gleichzeitig KLEINER UND GRÖSSER sein - meckert so was der Kompiler nicht an, oder optimiert Der Das einfach nur weg?
Davon ab solltest Du auf einer Seite ein = mit einbringen, sonst passiert nämlich Nichts, wenn Du die Grenze genau triffst.
MfG
digitalWrite(ledpin,pwm1>=1200&&pwm1<1400);
postmaster-ino:
if((pwm1 < 1200)&&(pwm1 > 1400))
Das wird wohl NIE greifen - die Variable kann nicht gleichzeitig KLEINER UND GRÖSSER sein - meckert so was der Kompiler nicht an, oder optimiert Der Das einfach nur weg?
Davon ab solltest Du auf einer Seite ein = mit einbringen, sonst passiert nämlich Nichts, wenn Du die Grenze genau triffst.
MfG
digitalWrite(ledpin,pwm1>=1200&&pwm1<1400);
Nein, meckert nicht aber funktioniert auch nicht.