Hallo Forum,
ich möchte in einer Schaltung einen Arduino Nano einsetzen der dort eine
einfache Steuerungsaufgabe übernimmt. Seit vielen Jahren nicht mit µCs
beschäftigt, bin daher momentan in der Einlernphase, seit bitte
nachsichtig ;-)
Meine Schaltung hat 6 Eingänge (Schalter mit Pulldown an A2-A7) und
mehrere Ausgänge an den Digitalpins. Damit mir die Zuordnung im Sketch
leichter fällt habe ich den Pins Namen zugeordnet, die Analogpins werden
als Digitale Eingänge verwendet. Das sieht dann so aus:
>#define REL_ENABLE 2>#define 0R_REL 3>#define +6DB_REL 4>#define +12dB_REL 5
.....
Später im loop aufgerufen z.B. so:
>// 0R Schalter gedrückt>>if(0R==HIGH){> if(100R==LOW){> digitalWrite(0R_SW, HIGH);> digitalWrite(100R_SW, LOW);> if(MUTE==LOW){> digitalWrite(0R_REL, HIGH);> digitalWrite(100R_REL, HIGH);> }> }>}
Ich habe mich ans Nano Pinout gehalten:
http://www.pighixxx.com/test/wp-content/uploads/2014/11/nano.png
A6 & A7 kann ich auf die weiße aber nicht als Digitale Eingänge
definieren, die haben im oberen Dokument auch keine passende
Bezeichnung.
Wie kann ich der SW möglichst einfach sagen das diese Pins als reguläre
Digitale Eingänge zu verwenden sind und ihnen einen Namen zuordnen? Gibt
es da eine einfache Lösung?
Danke!
Gruß,
Jan
Jan schrieb:> Wie kann ich der SW möglichst einfach sagen das diese Pins als reguläre> Digitale Eingänge zu verwenden sind und ihnen einen Namen zuordnen? Gibt> es da eine einfache Lösung?
Das sind reine analog Input.
Nichts sonst.
PS:
Warum glaubst du dem Datenblatt nicht?
Danke für Eure Antworten!
Sehr schade, dann muss ich mich gleich mit dem ADC auseinander setzen.
Hatte gehofft das beim ersten µC Projekt vermeiden zu können.
Dem Datenblatt glaube ich natürlich, auch wenn ich das vom Mega32 nicht
ganz gelesen habe.
Jan schrieb:> Dem Datenblatt glaube ich natürlich, auch wenn ich das vom Mega32 nicht> ganz gelesen habe.
Solltest du aber mal tun, dann wirst du feststellen, dass ADC6 und ADC7
des Mega32 sowohl analog können, als auch vollwertige digital Pins (PA6
und PA7) sind.
Jan schrieb:> auch wenn ich das vom Mega32 nicht> ganz gelesen habe.
Aber du hast keinen Mega32, sondern einen Mega328P...
Jan schrieb:> in einer Schaltung einen Arduino Nano einsetzen
sumo schrieb:> Jan schrieb:>> auch wenn ich das vom Mega32 nicht>> ganz gelesen habe.>> Aber du hast keinen Mega32, sondern einen Mega328P...>> Jan schrieb:>> in einer Schaltung einen Arduino Nano einsetzen
Auf dem Schema V2.3 zum Arduino Nano habe ich den Atmega168-20au
gefunden.
Gibt es noch andere Versionen?
Harlekin schrieb:> Gibt es noch andere Versionen?
Üblich ist der ATMega328P
Der Nano mit ATMega168, ist meines Wissens nach, ausgestorben.
Schon lange keinen mehr im Handel gesehen(aber das heißt nix)
>Solltest du aber mal tun, dann wirst du feststellen, dass ADC6 und ADC7>des Mega32 sowohl analog können, als auch vollwertige digital Pins (PA6>und PA7) sind.
Dann verstehe ich nicht wie du das vorher meintest?
"Das sind reine analog Input.
Nichts sonst."
http://www.pighixxx.com/test/pinouts/boards/nano.pdf
Ich habe jetzt weit genug ins Datenblatt geschaut und gesehen das dort
alle Analogpins auch als Digitale I/Os verwendet werden können. Laut der
verlinkten Grafik vom Nano Pinout (rotes Ausrufezeichen) ist das aber
wohl nicht so. Könnt ihr mir verraten warum? Scheine da einen Denkfehler
zu haben?
Danke nochmal!
Jan schrieb:> Dann verstehe ich nicht wie du das vorher meintest?>> "Das sind reine analog Input.> Nichts sonst."
Vorher sprachest du von einem Arduino Nano!?!?
Und dazu ist meine Aussage korrekt.
Und danach sprachst du vom Mega32.
Und dazu ist meine zweite Aussage korrekt.
Tipp:
Drücke dich klar aus, dann bekommst du auch eindeutige Antworten.
Eierst du rum, dann ....
Jan schrieb:> Ich habe jetzt weit genug ins Datenblatt geschaut und gesehen das dort> alle Analogpins auch als Digitale I/Os verwendet werden können.
Das weiße Ausrufezeichen im roten Dreieck sagt dir nichts?
Harlekin schrieb:> Gemäss dem Pinout müssten die Anschlüsse A6 und A7 auch digital> konfigurierbar sein.
Sind sie nicht.
No!
Kannste knicken.
Ein Irrtum.
Wird nix.
Nada.
>Drücke dich klar aus, dann bekommst du auch eindeutige Antworten.>Eierst du rum, dann ....
Sorry, die rede ist weiterhin vom Nano.
>Das weiße Ausrufezeichen im roten Dreieck sagt dir nichts?
Wenn ich ins Zusammengefasste Datenblatt (Seite 11) vom 328P schaue sehe
ich dort Pin 19 und 22 die beim Arduino A6 und A7 entsprechen.
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Summary.pdf
Im Datenblatt sind diese als ADC bezeichnet, mich hat verwirrt das sie
dort auch (durch die Zuordnung mit den Farben) Als Digital Pin verwendet
werden können. Vermutlich ist gemeint das diese auch mit entsprechender
Auswertung im Sketch einen Digitalen Eingang abgeben können, anders kann
es ja nicht sein.
Von meiner Seite aus ist es jetzt klar, ich lese mich in die Auswertung
der ADC Pins ein und versuche es. Danke nochmal für die Hilfe!
Jan schrieb:> anders kann es ja nicht sein.
Die Farbgebung ist ein Irrtum.
Mehr nicht....
Irgendein Grafiker/Bildchenmaler hat seinen Auftrag ausgeführt.
Dank mangelnder Sachkenntnis, oder Sorgfalt, eben nicht 100% richtig.
Ich vermute:
Das wird innerhalb der nächsten 2 Jahre korrigiert werden.
Im Moment haben sie noch wichtigeres zu tun...
Stefan U. schrieb:> Das hatten wir schonmal vor ein paar Wochen durchgekaut. Dieses Bild im> DB ist fehlerhaft. Die Pins sind nur über den ADC abzufragen.
Das sehe ich jetzt auch so. Es gibt keine Register, wo man den Zustand
abfragen könnte.
Jan schrieb:> A6 & A7 kann ich auf die weiße aber nicht
Ich auch nicht, meine sind schwarz.
Jan schrieb:> Sehr schade, dann muss ich mich gleich mit dem ADC auseinander setzen.
Es ist in der Tat extrem schwierig, nach Stunden im Internet:
int Messwert = analogRead(7);
if (Messwert > 800) {
mache irgendwas
}
Harlekin schrieb:> Auf dem Schema V2.3 zum Arduino Nano habe ich den Atmega168-20au> gefunden.> Gibt es noch andere Versionen?
Kann man immer noch in China kaufen. Tue ich aber nicht, schon seit
Jahren ist der 328 verbreitet.
Jan schrieb:> Ich habe jetzt weit genug ins Datenblatt geschaut und gesehen das dort> alle Analogpins auch als Digitale I/Os verwendet werden können.
Alle außer 6 und 7.
Jan schrieb:> Gemeine Falle für einen Anfänger, da denkt man eher an ein Problem mit> dem "User" vor dem Schirm.
Genau das ist es letztendlich auch: Wenn man Arduino einsetzt, hält man
sich an deren Beschreibungen - da sind A7 und A7 als nicht-digital
benannt. Dank der Hochsprache ist man von dem eigentlichen Controller
entfernt und muß sich um dessen Interna nur rudimentär kümmern.
Selbst wenn der µC das könnte, wer sagt uns, dass die A*-IDE das
unterstützen würde?
Manfred schrieb:> Selbst wenn der µC das könnte, wer sagt uns, dass die A*-IDE das> unterstützen würde?
Die Arduino IDE unterstützt in Sachen µC offensichtlich nahezu alle
Varianten, denen man C++ aufdrücken kann.
Auf irgendwelche Pins kommts da nicht so an.
Denn da gibts zu jeder Hardware einen Order "variants" mit den diversen
pins_arduino.h.
Also, wenn man es der IDE verkaufen kann/will dann da.
Ich weiß nicht genau....
Aber wenn ich zu solchen Tricks greifen müsste, hätte ich das Gefühl was
falsch gemacht zu haben.
Zumindest würde ich versuchen ein paar Digitalpins frei zu schaufeln.
z.B. mit Charlie- oder Multiplexing
Oder SPI/I2C Erweiterungen.
Oder einen anderen µC wählen
Arduino F. schrieb:> Aber wenn ich zu solchen Tricks greifen müsste, hätte ich das Gefühl was> falsch gemacht zu haben.
Ich habe ein Projekt in Arbeit, wo mir am Nano die Ports ausgehen. Da
habe ich 9 Tasten mit 8 Widerständen und einem Pullup an einen
Analogport geklemmt, bislang hatte ich keinerlei Fehlfunktionen. Die
Unterroutine mit switch und case benötigt irgendwas unter 2
Millisekunden, um die Tastennummer auszurechnen. Zuvor lasse ich mir
15ms für Tastenbeep und Prellerkennung, also sehe ich keinerlei Problem,
einen A-Port zu verwenden.
> Aber wenn ich zu solchen Tricks greifen müsste, hätte ich das Gefühl> was falsch gemacht zu haben.
Dann hast du noch keine 32bit Controller gesehen. Versuche mal bei einem
STM32F103 die USB Schnittstelle zu programmieren.
Berufliche Software-Entwickler bauen ständig Workarounds, die meisten
Programme bestehen in ganz wesentlichen Teilen aus solchen hässlichen
Konstrukten. Das tun wir Entwickler nicht, weil wir doof sind, sondern
weil wir müssen. Denn wenn das Programm am Liefertermin nicht tut, was
es soll, gibt's keine Brötchen.
Als Softwareentwickler kannst du nicht sagen: Geht nicht, die Hardware
ist Schuld. Das interessiert niemanden. Als Softwareentwickler hängt du
immer am Ende einer langen Entwicklungskette. Du musst die Fehler deiner
Vorgänger ausbügeln und dabei mit der Zeit auskommen, die sie Dir übrig
gelassen haben.
Das kostet Nerven, deswegen ist der Job gut bezahlt.
Aber du kannst gerne einen idealen µC für deine Anwendung suchen - wenn
es ein Hobby ist und Zeit keine Rolle spielt. Im Berufsleben läuft es
leider nicht so.