Hallo Leute.
Ich versuche mich gerade mal an einem kleinen Projekt mit Mega2560.
Es sollen eigentlich nur ein paar Pins geschaltet werden.
Hierzu sende ich dem Arduino per Serial einen String.
Je nachdem welchen "Port" ich da schalten will soll dieser ein oder ausgeschaltet werden.
Aber egal was ich sende, es wird immer nur der erste meiner Ports geschaltet.
Empfangen tut er das richtige, aber schaltet immer nur den Port0 auf Pin31.
was mache ich falsch??
Ich sende "SetPort0" --> Ergebnis:
16:09:51.197 -> Empfangen:SetPort0
16:09:51.230 ->
16:09:51.230 -> Port0=1
16:09:51.230 -> Port1=0
16:09:51.230 -> Port2=0
16:09:51.265 -> Port3=0
16:09:51.265 -> Port4=0
16:09:51.265 -> Port5=0
16:09:51.299 -> Port6=0
16:09:51.299 -> Port7=0
Sende ich danach "SetPort1", wo ich eigentlich erwarte, dass Port1 auf 1 geht kommt:
16:11:00.779 -> Empfangen:SetPort1
16:11:00.779 ->
16:11:00.779 -> Port0=0
16:11:00.813 -> Port1=0
16:11:00.813 -> Port2=0
16:11:00.813 -> Port3=0
16:11:00.813 -> Port4=0
16:11:00.848 -> Port5=0
16:11:00.848 -> Port6=0
16:11:00.848 -> Port7=0
Heist Port0 geht auf LOW und Port1 nicht.
Sende ich dann z.b. "SetPort3" geht wieder nur Port0 HIGH.
irgendwas übersehe ich doch hier... Danke schon mal..
int Ports[] = { 31, 33, 35, 37, 39, 41, 43, 45}; // an array of pin numbers to which LEDs are attached
int pinCount = 8;
int PortStatus[] = { 0, 0, 0, 0, 0, 0, 0, 0};
int data = 0;
String SerialInput = "";
void setup()
{
// put your setup code here, to run once:
// the array elements are numbered from 0 to (pinCount - 1).
// use a for loop to initialize each pin as an output:
for (int thisPin = 0; thisPin < pinCount; thisPin++)
{
pinMode(Ports[thisPin], OUTPUT);
digitalWrite(Ports[thisPin], LOW);
}
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
SerialInput="";
if (Serial.available() > 0)
{
//lesen von Daten
//data = Serial.read();
//char zeichen = (char)data;
SerialInput = Serial.readString();
Serial.print("Empfangen:");
Serial.println(SerialInput);
if(SerialInput == 'SetPort0')
{
PortStatus[0] = PortStatus[0] == 0 ? 1 : 0;
digitalWrite(Ports[0], PortStatus[0] == 1? HIGH:LOW);
}
else if(SerialInput == 'SetPort1')
{
PortStatus[1] = PortStatus[1] == 0 ? 1 : 0;
digitalWrite(Ports[1], PortStatus[1] == 1? HIGH:LOW);
}
else if(SerialInput == 'SetPort2')
{
PortStatus[2] = PortStatus[2] == 0 ? 1 : 0;
digitalWrite(Ports[2], PortStatus[2] == 1? HIGH:LOW);
}
else if(SerialInput == 'SetPort3')
{
PortStatus[3] = PortStatus[3] == 0 ? 1 : 0;
digitalWrite(Ports[3], PortStatus[3] == 1? HIGH:LOW);
}
else if(SerialInput == 'SetPort4')
{
PortStatus[4] = PortStatus[4] == 0 ? 1 : 0;
digitalWrite(Ports[4], PortStatus[4] == 1? HIGH:LOW);
}
else if(SerialInput == 'SetPort5')
{
PortStatus[5] = PortStatus[5] == 0 ? 1 : 0;
digitalWrite(Ports[5], PortStatus[5] == 1? HIGH:LOW);
}
else if(SerialInput == 'SetPort6')
{
PortStatus[6] = PortStatus[6] == 0 ? 1 : 0;
digitalWrite(Ports[6], PortStatus[6] == 1? HIGH:LOW);
}
else if(SerialInput == 'SetPort7')
{
PortStatus[7] = PortStatus[7] == 0 ? 1 : 0;
digitalWrite(Ports[7], PortStatus[7] == 1? HIGH:LOW);
}
}
for (int thisPin = 0; thisPin < pinCount; thisPin++)
{
Serial.print("Port");
Serial.print(thisPin);
Serial.print("=");
Serial.println(PortStatus[thisPin]);
}
delay(1000);
}