Pages: [1]   Go Down
Author Topic: Mehrere Programme gleichzeitig auf Arduino Mega  (Read 2129 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 6
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo Leute,

ich hab jetzt die ganzen Anfängertutorials durchgemacht und die ganzen Schaltungen aufm Steckbrett nachgebaut!  Jetzt hab ich die ganzen einzelnen Teile hier rumliegen und werden nicht verwendet. Nun würde ich gern alles in einer Schaltung verbauen! Wie kann ich nun z.B. eine Uhr gleichzeitig mit einer gemultiplexten 10x10 Matrix (20 ARDUINO MEGA PINS) laufen lassen und noch Temperatur messen (3 ARDUINO PINS) und gleichzeitig auf einem LCD 2x16 HD44700 (12 ARDUINO MEGA PINS) die Werte ausgeben, einen Poti auslesen (3 ARDUINO MEGA PINS) die Werte über PWM an eine RGB LED (3 ARDUINO MEGA PINS) ausgeben und, und, und ...bis alle Pins aufgebraucht sind? Wo sind hier die Grenzen?

Grüße SonGoku
« Last Edit: March 10, 2011, 02:26:13 pm by SonGoku » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 153
Ich wuerde so gerne die Welt veraendern, doch Gott gibt mir den Quelltext nicht
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hey! also ich habe vor kurzem mal wegen Shift In / Shift Out nachgefragt damit kannst du die Arduino Pins erweitern (sozusagen)

http://www.arduino.cc/en/Tutorial/ShiftOut <-- zb beispiel für den LCD Dsplay
http://www.arduino.cc/en/Tutorial/ShiftIn <-- zb Thermometer
Logged

Ich wuerde so gerne die Welt veraendern, doch Gott gibt mir den Quelltext nicht

Offline Offline
Full Member
***
Karma: 0
Posts: 153
Ich wuerde so gerne die Welt veraendern, doch Gott gibt mir den Quelltext nicht
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ach so, ich finde die Idee spitze
Logged

Ich wuerde so gerne die Welt veraendern, doch Gott gibt mir den Quelltext nicht

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 248
Posts: 21154
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Zuerst mal haben die Arduino kein Multitasking und darum geht nur eines mach dem anderen.
Der ArduinoMega hat 54 digitale Ein/Ausgänge und 15 Analoge Eingänge die, glaube ich, auch digital verwendet werden können.
Wenn das auch noch nicht reicht dann nimmst Du den Seeeduino Mega. der hat 70 digitale Pins.
Wenn das nicht reicht dann gibt es serielle interface für paralelle Displays oder gleich serielle Displays. Die HD44780 haben auch ein 4Bit Interface und darum brauchen zum Ansteuern 7 Pins
http://arduino.cc/playground/Code/LCD4BitLibrary
oder über ein Schieberegister: http://arduino.cc/playground/Code/LCD3wires
Oder wenn Du 2 Displays ansteuern willst dann kannst Du die Datenpins, Write und RS paralellschalten und darum brauchst Du dann innsgesamt 8 Pins und deine selbst geschriebene Ansteuerung.
Des weiteren gibt es jede Menge Bausteine für I2C. Da können bestenfalls 127 Geräte angeschlossen werden (praktisch reduziert sich die Zahl wahrscheinlich unter 20)

Das Limit ist dabei die rechenzeit; jede Funktion verbraucht Rechenzeit und die Anwendungen sollen ja flott antworten und nicht nach 5 sekunden den temperaturwert ausgeben.
Grüße Uwe



 
 
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 6
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja super - vielen Dank für die schnelle Antworten! Das Problem ist nicht die Anzahl der Pins, sondern das der Rechenleistung. Wie oben von Uwe beschrieben müssen die Aufgaben nacheinander abgearbeitet werden, aber wie setz ich das im Arduino Programm um? Kann ich die ganzen einzelnen Aufgaben (Temp-Messung, LCD,....) in einem jeweils eigenen Tab in der Arduino Programmier Umgebung erstellen? ....und wenn mir die Pins ausreichen,muss ich doch nicht noch ein Shift Register verwenden?

Grüße SonGoku




Logged

Offline Offline
God Member
*****
Karma: 5
Posts: 705
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

HI,

versuche mal zu helfen, weil ich ähnliches mit meinem im Aufbau befindlichen AquaController mache:
- Wassertemperatur messen
- 5 verschiedene LEDs dimmen
- das ganze Zeitgesteuert, also ne RTC auslesen
- die Lampen manuell einstellen über nen Encoder, also Encoder Werte auslesen und übertragen
- alle Infos an ein 4x20 LCD ausgeben
- geplant: Relaissteuerung, Lüftersteuerung, noch nen paar andere.

Was du machen musst: Alle EInzelprogramme die du hast in einem Gesamtprogramm verpacken. Das ganze machst du hauptsächlich über IF-Befehle, die nacheinander prüfen, ob zB zu einer bestimmten Zeit (If Zeit==xy) etwas passieren soll (void DO() )
Das verschachteln aller Einzelprogramme dauert ein wenig, fang am besten an zwei Programme zu verschachteln und dann fügr die anderen nacheinander zu.
Theoretisch kannst du auch für jedes Programm ne eigene Void schreiben und dann in der Loop die VOids per IF aufrufen lassen.
Und immer dran denken: Delays() vermeiden, besser so: http://www.arduino.cc/playground/Learning/BlinkWithoutDelay_de

Gruß


Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 6
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja, thx! Das sind nützliche Tips, die ich brauchen kann! ...aber wenn das wirklich so einfach wär! Naja mal schauen ob sich dies so realisieren lässt! Jetzt mach ich mal die Schaltpläne und ihr werdet sicher wieder von mir hören!

@ currymuetze: Hast du deinen Code schon fertig? Wenn ja, funktioniert alles nach Plan?


Grüße SonGoku
Logged

Pages: [1]   Go Up
Jump to: