Arduino mit mehreren funktionen.

Hallo!

Ich habe hier einen Arduino der 4 Relais schalten soll. Dies geschiet erst einmal durch die Schalter und andererseits durch Signale welche über den IR Port empfangen werden. Als dritte funktion sollen noch Kommandos über I2C an Port 4 und 5 versandt werden.

Das wäre ja quasi Multitasking da über den Sensor abgehört wird während er auf Signale von den Tastern wartet.
Ist das ganze Möglich? Oder wie relaisiert man das ganze besser? Theoretisch müsste man alles über Interrupts machen jedoch hat der Atmega8 ja nur zwei (welche schon vom das I2C benutzt werden)

hier noch ein Schaltplan.

Das wäre ja quasi Multitasking da über den Sensor abgehört wird während er auf Signale von den Tastern wartet.

loop() 
{ 
  ///...
}

sollte so geschrieben sein, dass es schnell fertig ist, und somit oft aufgerufen wird.
--> Kein delay() !!!
loop() "wartet" also nicht wirklich, sondern sammelt nur Informationen, um den aktuellen Zustand zu kennen, und merkt sich eventuell den Zeitpunkt, wann etwas passiert ist, um zu wissen wann lange genug "gewartet" wurde.

Du unterschätz die Geschwidnigkeit des Controllers mit 16Mhz.
Ich habe hier einen Code (8k) incl. I2C RTC der hat ne durchlaufzeit von 600-700µs.
Wenn du ,wie mein Vorredner schon sagte keine Delays benutzt, dann "schaut" dein Controller ca 1000 mal pro 1s nach ob was an den digitalen Eingängen passiert. Und das du dann da etwas gleichzeitig hast bzw das Signal von den Tastern zu kurz ist um das zu sehen ist mehr als unwahrscheinlich. Der AVR ist sogar so schnell das er das prellen der Taster "sieht".

Ah, Okay. Wenn ich es also wie in diesem Beispiel Beispiel ohne delay mache, sollte es funktionieren?

Wenn ich es mit mehreren (3) Chips mache (2 Senden (button und IR) und einer stellt ein) muss ich es mit diesem Multimaster sketch machen, oder? Damit kann ich mir ja quasi ein Netzwerk aus Arduinos bauen welches die benötigten Sachen umsetzt.

Zusätzlich werde ich dann die Schalter noch mit einem RC Glied entprellen