Hallo Forum, ich habe mal eine ganz praktische Frage: ich benutze für meine SchülerExperimente den Mikrocontroller Arduino Nano V3.0 (mit ATmega328PB und CH340), sowie die Arduino IDE, das auf einem Windows 10 Rechner läuft. Die Verbindung zwischen dem Mikrocontroller und dem PC wird mit USB realisiert. Bislang programmieren die Schüler lediglich das Blinken einer LED (zB. den Morsecode für SOS) bzw. das Abspielen einer 'Melodie' über einen piezo summer am Ausgang. Nun würde ich gern Text/Zahlen ein- und ausgeben wollen, zB. für das Berechnen einer einfachen Aufgabe (es geht ja nur ums Prinzip). Mein Grundgedanke ist dabei folgender: man öffnet die Eingabeaufforderung unter Windows, geht darin zum Mikrocontroller und startet das darauf befindliche Programm. Dabei wird man bspw. aufgefordert zwei zu addierende Zahlen einzugeben und erhält als Resultat natürlich das Ergebnis. Das setzt aber voraus, dass sowohl Ein- als auch Ausgabe über die USB-Schnittstelle erfolgen. Geht das überhaupt und wenn ja, wie? Probiert habe ich alle möglichen Arten von Ausgängen und dabei lediglich festgestellt, das man auf dem board insgesamt vier LED's zum Leuchten bringen kann. Müsste ich dem Mikrocontroller nicht auch einen Laufwerksbuchstaben zuweisen? (Noch) weigert sich Windows, dies zu tun. Wie immer würde ich mich über Antworten freuen. vielen Dank schon mal trunx
:
Verschoben durch User
wie will Jemand der selbst keine Ahnung hat Anderen was beibringen? Wenn du statt der Eingabeaufforderung ein Terminalprogramm nimmst hättest du eine entfernte Chance etwas zu erreichen. Wie das geht kannst du aber selbst im Netz finden. Du Lehrer!
https://www.arduino.cc/en/pmwiki.php?n=Main/ArduinoBoardNano sagt: > Communication > > The Arduino Nano has a number of facilities for communicating with > a computer, another Arduino, or other microcontrollers. The ATmega328 > provide UART TTL (5V) serial communication, which is available on digital > pins 0 (RX) and 1 (TX). An FTDI FT232RL on the board (bei dir CH340) > channels this serial communication over USB and the ... drivers ... > provide a virtual com port to software on the computer. Diesen COM-Port solltest du sehen können. Der CH340 (oder FT232) kann nichts anderes, es gibt also keine Laufwerksbuchstaben, oder irgendein anderes USB-Gerät. Und: > The Arduino software includes a serial monitor which allows simple textual > data to be sent to and from the Arduino board. siehe auch https://www.arduino.cc/reference/en/language/functions/communication/serial/
:
Bearbeitet durch User
Jens K. schrieb: > man öffnet die Eingabeaufforderung unter Windows, geht darin zum > Mikrocontroller und startet das darauf befindliche Programm. Du suchst ein Terminalprogramm. TeraTerm ist ein gutes Beispiel dafür.
Hier hast du eine Beispielanwendungen zur Inspiration: http://stefanfrings.de/serial_io/index.html Geht das in die Richtung die du suchst? Auf jeden Fall kann man sich nicht direkt auf Mikrocontroller einloggen um quasi beliebige Befehle abzusetzen, denn dazu bräuchten Sie ein Betriebssystem und eine Shell. Das kennst du vielleicht vom Raspberry Pi. Was aber mit der Dir vorliegenden Hardware machbar ist: Man schreibt ein eigenes Programm, dass eine kleine Menge von Befehlen am seriellen Port annimmt und beantwortet.
Frank L. schrieb: > wie will Jemand der selbst keine Ahnung hat Anderen was beibringen? Leider ist das die traurige Wahrheit... Innerhalb der letzten 3 Monate, hatte ich zwei Fälle von "keine Ahnnung Lehrkräften" :-( Einer an einer Berufsschule für Techniker, der andere an einem Gymnasium. Ich kann es mir nur so erklären, dass die Lehrer in dieses Thema hineingeworfen werden und es unterrichten sollen - dabei kommt dann eben sowas bei rum. Ich kann da ebenfalls nur den Kopf schütteln...
Hallo, ja, das geht, aber etwas anders als Du denkst. Trenne Dich von der Windows/ Ordner Exe ... Gedankenwelt. Der Arduino ist, wie bereits oben beschrieben, vie COM-Port / RS232 mit dem PC verbunden. Du kannst darüber beliebige Strings/Befehle was auch immer senden. Und das geht in beide Richtingen. Das ist dann eher so wie eine Client-Server Netzwerkverbindung (ja, ja, das ist Punkt zu Punkt und ohne unterlegtes Protokoll...) Damit kannst Due dem Arduino also Befehle senden. Dann muss das Programm auf dem Arduino "lediglich" die Befehle auseinandernehmen und abarbeiten und dann die Antwort zurücksenden. Auf der Arduino Seite heißt die Gruppe von Commandos serial z.B. serial Beginn() Auf der PC Seite würde ich dir das Hterm empfehlen. Das ist zwar schon etwas angestaubt, aber imho anderen Programmen in vielen Punkten deutlich überlegen.
Frank L. schrieb: > wie will Jemand der selbst keine Ahnung hat Anderen was > beibringen? Denke darüber bitte nochmal genauer nach, wenn ich genauso denken würde (und leider tun dies viele Kollegen), dann gäbe es nur Laubsägearbeiten im Technikunterricht :) > Wenn du statt der Eingabeaufforderung ein Terminalprogramm nimmst > hättest du eine entfernte Chance etwas zu erreichen. Wie das geht kannst > du aber selbst im Netz finden. Du Lehrer! ich bin davon ausgegangen, dass die Eingabeaufforderung das Windows-Terminal ist. Linux ist auf unseren Rechner nicht möglich.
Jens K. schrieb: > ich benutze für meine SchülerExperimente den Mikrocontroller Arduino > Nano V3.0 (mit ATmega328PB und CH340), sowie die Arduino IDE Wenn du das doch schon alles hast, dann brauchst in der Arduino IDE nur den "Serieller Monitor" öffnen und auf dem Board die Serial Klasse nutzen.
Jens K. schrieb: > ich bin davon ausgegangen, dass die Eingabeaufforderung das > Windows-Terminal ist. Linux ist auf unseren Rechner nicht möglich. Von Linux war auch gar nicht die Rede. Terminalprogramme gibt es für alle Betriebssysteme (sogar Smartphones). Du musst das nur zwischen den Varianten für Netzwerk und serielle Schnittstellen unterscheiden. Du brauchst eins für serielle Schnittstellen, weil diese Arduino Module virtuelle serielle Ports bereit stellen.
Unglaublich. Massenweise Schimpfereien und nur eine Antwort, die das Thema passend für den Fragesteller trifft. Wie kann man jemand mit "keine Ahnung" beschimpfen, wenn man selbst keine Ahnung hat? Also nochmal zur Verdeutlichung, einmal kam's ja schon richtig: - Die Arduinos sind mit ihrer USB-Verbindung, die ja quasi eine serielle Verbindung emuliert, natürlich dafür gedacht, über diese Verbindung auch im Ablauf ihres Programmes zu kommunizieren. - Wenn Ihr mit der IDE arbeitet, ist der Arduino bereits erfolgreich verbunden, denn über die Verbindung wird ja das Programm auf den Arduino geladen, z.B. "Blink" - Im Arduino-Programm muß man mit den Befehlen der Serial-Library arbeiten, die schon basismäßig mit drin ist. Das findet Ihr dann schon selbst heraus. - In der Arduino IDE startet man das Tool "Serial Monitor", das IST ein Terminal-Programm.
Lieber TO, dir fehlt da noch einiges an Wissen, wie mir scheint. Arbeite dich mal zum Thema "Serielle Schnittstelle" beim Arduino ein, denn das ist das, was du suchst! Du kannst nicht einfach über ein Terminal/Konsole auf dem Computer "auf den Arduino gehen" und "dort ein Programm starten". Da läuft ja kein Betriebsystem drauf mit dem man mehrere Unterprogramme einfach von irgendwo her aufrufen könnte. Ich finde auch ulkig, wie du auf die Idee kommst, dem Arduino einen Laufwerksbuchstaben zuweisen zu wollen. Sowas geht überhaupt nicht. :-D Da der Arduino ja bereits über USB mit dem Computer verbunden ist ist er auch als Serielle Schnittstelle (dein Stichwort!) im Gerätemanager Sichtbar. D.h. man kann ihn als COM1.. COM3.. COM12 oder so irgendwas ansprechen. Und zwar mit einer geeigneten Terminal-Software (oder die, die in der Arduino IDE eingebaut ist). Damit kann dein Computer Daten über die Serielle Schnittstelle an den Arduino senden und von diesem auch empfangen. Da hast du dann quasi deine Ein- und Ausgabe. Das Programm, das auf dem Arduino läuft muss dann anfangs seine eigene Serielle Schnittstelle einrichten und sich darum kümmern, dass eingehende Daten verarbeitet werden und daraufhin die gewünschte Rückantwort gesendet wird. Alles super basic-kram, da gibt's Tutorials für. Stichworte: - Serielle Schnittstelle Arduino - Serial Tutorial Arduino - UART
Guck dir doch mal die "Communication" Examples in der IDE an: > Read ASCII String: Parse a comma-separated string of integers to fade an > LED. > Serial Call Response: Send multiple variables using a call-and-response > (handshaking) method. > Serial Call Response ASCII: Send multiple variables using a call-and- > response (handshaking) method, and ASCII-encode the values before sending. > Serial Event: Demonstrates the use of SerialEvent().
:
Bearbeitet durch User
Jens K. schrieb: > Dabei wird man bspw. > aufgefordert zwei zu addierende Zahlen einzugeben und erhält als > Resultat natürlich das Ergebnis. Für solche Aufgaben würde ich mich aber gänzlich vom Arduino lösen. Denn so Sachen wie printf, scanf und co. machen auf einem Controller nicht so richtig viel Spaß. Und als Lehrmethode ergibt es auch keinen wirklichen Sinn. Für die C-Grundlagen und die Grundlagen der Ein- und Ausgabe würde ich das Programmieren von einfachen Windows-Anwendungen, die in der Eingabeaufforderung laufen. Ich würde Code::Blocks als IDE zusammen mit dem GCC bilden eine recht einfache Entwicklungsumgebung, mit der man schnell mal ein paar textbasierte Programme erstellen und testen kann. Das Kompilieren geht schneller und der Code muss nicht erst auf den Controller übertragen werden. Und eben so stdio-Sachen wie printf, scanf laufen out of the Box und man muss sich keine Gedanken über Flashspeicher machen. Es gibt dann sogar die Möglichkeit, über Serial-Bibliotheken das Windows-Programm mit dem Arduino kommunizieren zu lassen und man kann dann z.B. ein Windowsprogramm schreiben, dass mit einem Programm auf dem Arduino kommuniziert und z.B. je nach serieller Nachricht dann LEDs schaltet oder Eingänge zurückgibt. Das würde aber voraussetzen, dass der Lehrer weiß, was er tut...
:
Bearbeitet durch User
Die Arduino IDE hat doch sogar selbst soagr eine einfache Terminal-Emulation, nennt sich Serial Monitor.
Sebastian R. schrieb: > Es gibt dann sogar die Möglichkeit, über Serial-Bibliotheken das > Windows-Programm mit dem Arduino kommunizieren zu lassen und man kann > dann z.B. ein Windowsprogramm schreiben, dass mit einem Programm auf dem > Arduino kommuniziert und z.B. je nach serieller Nachricht dann LEDs > schaltet oder Eingänge zurückgibt. Gibts schon recht weit fertig vorgekaut. Einerseits: Suche mal nach "Arduino CmdMessenger" Eher was für zwischen Arduinos, oder zu C# auf dem PC Und andererseits: Processing oder solche wie http://www.serialcominstruments.com/instrument.php
Arduino Fanboy D. schrieb: > Processing Das ist aber Java. Und ich möchte den TO nicht mit mehreren Sprachen und dann noch mit einer Objektorientierten verwirren. ;) Ich würde erstmal bei C bleiben.
Sebastian R. schrieb: > Ich würde erstmal bei C bleiben. Dann ist er/sie/es aber bei Arduino schon recht falsch, denn da ist C++ die Sprache der Wahl. Auch ist die Arduino Entwicklung (ursprünglich) doch schon sehr mit Processing verflochten. Daher kommt auch der, viele irritierende, Begriff "Sketch" für ein Programm. Auch setup(), loop(), digialWrite() usw. haben ihren Ursprung dort. Processing ist vielleicht nicht die Mutter von Arduino, aber sicherlich sowas, wie eine Großtante. --- Sebastian R. schrieb: > und dann noch mit einer Objektorientierten verwirren. ;) Wie du siehst, steckt er/sie/es, alleine durch die Wahl "Arduino", mit beiden Beinen in der OOP. Schaue dir nur mal die originale Arduino AVR EEPROM Library an... https://github.com/arduino/ArduinoCore-avr/blob/master/libraries/EEPROM/src/EEPROM.h Für einen auf C fixierten Menschen, könnte das ein schockierender Anblick sein.
Achja... Ich vergesse immer, dass die Sketche mal .cpp hießen, bevor .ino eingeführt wurde....
Sebastian R. schrieb: > Achja... Ich vergesse immer, dass die Sketche mal .cpp hießen, > bevor > .ino eingeführt wurde.... *.pde hießen sie... ;-) *.cpp heißen sie, wenn der Builder alle *.ino eines Projektes verschmolzen hat. Und als *.cpp werden sie dann dem Compiler in den Rachen geworfen.
Adam P. schrieb: > Frank L. schrieb: >> wie will Jemand der selbst keine Ahnung hat Anderen was beibringen? > > Leider ist das die traurige Wahrheit... > > Innerhalb der letzten 3 Monate, hatte ich zwei Fälle von "keine Ahnnung > Lehrkräften" :-( > > Einer an einer Berufsschule für Techniker, der andere an einem > Gymnasium. > > Ich kann es mir nur so erklären, dass die Lehrer in dieses Thema > hineingeworfen werden und es unterrichten sollen - dabei kommt dann eben > sowas bei rum. > > Ich kann da ebenfalls nur den Kopf schütteln... Ich nicht. Die Aufgabe von Lehrern ist, anderen etwas beizubringen. Da ist pädagogisches Können fast wichtiger, als technisches Wissen. Dass das zu kurz kommt bei der Lehrerausbildung, sehe ich auch so. Ein Grund für persönliche Angriffe ist es trotzdem nicht. Würde man Falk Brunner (odere ähnliche "diplomatisch" Leute aus diesem Forum) auf 30 Kinder loslassen, würden diese heulend nach Hause rennen, und noch weniger lernen. Hier ist doch schon einmal die Bereitschaft gegeben, einzugestehen, dass man etwas nicht weiß. Und die Bereitschaft, etwas zu lernen. Das Lehrern eine gewisse Geringschätzigkeit gegenüber technischem Wissen innewohnt, stimmt leider manchmal. Hier wurde das aber bisher noch nicht geäußert.
Kein Lehrer schrieb: > Hier ist doch schon einmal die Bereitschaft gegeben, einzugestehen, dass > man etwas nicht weiß. Und die Bereitschaft, etwas zu lernen. Jegliche Kompetenz entsteht durch einen Prozess... Diese Entwicklung wird einem nicht geschenkt. Nach diesem Modell, sind Lehrer am besten auf Stufe 3 aufgehoben: https://de.wikipedia.org/wiki/Kompetenzstufenentwicklung Und den Weg dahin, zu 3 (oder gar 4), wird man bei jedem neuen Thema gehen müssen. Das gilt natürlich auch für Lehrer.
Hallo an alle, erstmal vielen Dank, der serielle Monitor tut genau das, was ich mir gewünscht habe. Zu der anderen Diskussion, ob ein Lehrer auch mal von nix ne Ahnung haben und dennoch das Thema unterrichten darf: Es ist eine irrige Annahme, dass ein Lehrer alles wissen sollte und nur noch sein Wissen auf die Schüler zu übertragen hat. Natürlich weiß man als Lehrer eine ganze Menge und natürlich sollte man Experte auf dem jeweiligen Gebiet sein oder es zumindest werden wollen. Wichtiger finde ich (und so gestalte ich meinen Unterricht), dass es Projekte gibt und man sich, Schüler und Lehrer, das dazu notwendige Wissen letztlich gemeinsam erarbeitet. Diese Art des kooperativen Lernens brauchen die Schüler garantiert in ihrem späteren Leben, wohingegen das konkrete Fachwissen oft genug schnell veraltet oder anders obsolet wird. Für den Lernprozess ist es also durchaus vorteilhaft, wenn die Schüler einerseits experimentell in Neuland vordringen und dabei Fehler aber auch Erfolge haben dürfen (weil z.B. der Lehrer selbst welche macht), andererseits aber erleben, dass selbst Experten immer weiter lernen müssen und dass dies durchaus auch gemeinsam an einem Projekt sein kann. viele Grüße trunx
> Wichtiger finde ich (und so gestalte ich meinen Unterricht), dass es > Projekte gibt und man sich, Schüler und Lehrer, das dazu notwendige > Wissen letztlich gemeinsam erarbeitet. Wozu brauchen sie dann dich?
foobar schrieb: > Wozu brauchen sie dann dich? Damit sie einen Anleiter haben, welcher das lernen gelernt hat, und diese Fähigkeit auch vermitteln kann. ?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.