Hallo Leute
Folgendes möchte ich realisieren:
- Kommunikation zwischen µC und PC
- PC sendet *10250# (die letzten drei Ziffern sind für den duty der PWM)
- Die ersten beiden Ziffern nach dem „*“ sollen zum Schalten der IO’s genutzt werden.
- Die PWM kann ich tatsächlich einstellen, das Funktioniert
- Die IO’s kann ich nicht schalten wenn ich „data[1]“ benutze
Ich habe da offensichtlich ein Denkfehler.
Könnt ihr mir bitte unter die Arme greifen!
Danke und ein lieben Gruß
#include <SoftwareSerial.h>
SoftwareSerial myConnection(0, 1); // RX,TX
char data[7] = {0,0,0,0,0,0,0};
int duty=0;
void setup()
{
myConnection.begin(9600);
pinMode(22, OUTPUT);
//Löschen der Timer/Counter Control Register A und B
TCCR1A = 0;
TCCR1B = 0;
//Modus Fast PWM-Mode 8 Bit einstellen
TCCR1A |= (1 << WGM10) | (0 << WGM11);
TCCR1B |= (1 << WGM12);
//Vorteiler auf 1 setzen
TCCR1B |= (1 << CS10);
//Nichtinvertiertes PWM-Signal setzen
TCCR1A |= (1 << COM1A1);
//PWM-Pin 9 als Ausgang definieren
DDRB |= (1 << DDB1);
}
void loop()
{
if (myConnection.available()==7)
{
for (int i=0; i<6; i++)
{
data[i]=data[i+1];
}
data[6]=myConnection.read();
if ((data[0]=='*')&&(data[6]=='#'))
{
myConnection.print(data[1]);
myConnection.print(data[2]);
myConnection.print(data[3]);
myConnection.print(data[4]);
myConnection.print(data[5]);
duty = (data[3]*100)+(data[4]*10)+data[5];
if(data[1]==1)
{
digitalWrite(22,HIGH);
}
else
{
digitalWrite(22,LOW);
}
}
}
analogWrite(9, duty);
}