INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Mutliplexing verdrahtung
10.01.2019, 11:35 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2019 11:36 von Bau3r.)
Beitrag #1
Mutliplexing verdrahtung
Hey Leute,
ich habe mal eine Frage zu meinem Projekt zwecks Mutliplexing

Kurz zu dem Projekt:
Es gibt in Summe 40LED´s die nacheinander (keine feste Reihenfolge) aufleuchten.
Mit dem Eingang Start wird der Ablauf gestatrtet und mit Stop bleibt die aktuell leuchtende oder die nächste permanent An bis wieder Start gedrückt wird.
Die LED welche nun permanent geleuchtet hatte, wird bei den folgenden durchläufen ausgeschlossen, bis es nur noch eine LED gibt die angestuert werden kann.

Zur Frage, wenn ich LED1 (oben Links) ansteuere muss A1 HIGH und A5 LOW sein. soweit alles klar. Aber im gleichen zug sollte A2-A4 LOW sein und A6-A14 HIGH, damit keine andere LED sonst an ist?
Da ich kein Transistoren benötige zwecks der Stromstärken die an den Ausgängen liegen bin ich diesbezüglich noch n bisschen unsicher, bevor gleich alles hops geht Big Grin
Oder verwechsel ich da was bei den Möglichen Funktionen der Ausgänge?
Bin es noch nicht gewohnt dass man an + und - einfach so mal wechseln kann als auch Input als Ausgang doch zu verwenden Big GrinBig Grin
Bin bis jetzt nur LOGO, bzw größere Siemens Steuerungen von der Arbeit gewöhnt wo fast alles fest vorgegeben ist.



Ich verwende ein Arduino Micro (bzw ist bestellt) und werde dann 2 Digitale Eingänge und 14 Ausgänge 11Digital/3Analog verwenden

(Das ist mein erstes Projekt wo ich mit Ardunino und mit C arbeite,
das Programm ist aus meiner sicht "fertig" Big Grin )

   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2019, 12:28
Beitrag #2
RE: Mutliplexing verdrahtung
Wo sind Deine Vorwiderstände? Sollen die Sicherungen die Vorwiderstände darstellen?

Zur Ansteuerung - wie Du schon beschrieben hast:
Von A1 - A4 genau 1 HIGH und von A5 - A14 genau eine LOW (ich gehe davon aus, dass A = Ausgang heißt und nicht Analogeingang).
Solltest Du das im Zuge der Programmierung durch Fehler anders machen (also 2 LED aktivieren), kannst Du unter Umständen den Arduino grillen.
Beim Wechsel also immer z.B. alle A1-A4 auf LOW, dann A5-A14 wechseln und dann A1-A4 einen auf HIGH.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2019, 12:54
Beitrag #3
RE: Mutliplexing verdrahtung
Ich würde einen MAX7219 zu Hilfe nehmen.
Die LEDs so verschalten wie unter dem Punkt "Dot Matrix Display 1088AS" auf dieser Seite dargestellt.
So kann ein MAX7219 bis zu 64 LEDs, einzeln oder auch mehrere, ansteuern. Und fertige Librarys um den MAX7219 am Arduino anzusteuern gibt es auch sehr viele.
Damit sparst du eine Menge Anschlüsse am Arduino ein und um Vorwiderstände und Treibertransistoren muss man sich auch keine Gedanken machen.

Gruß Arne
Mit zunehmender Anzahl qualifizierter Informationen bei einer Fragestellung, erhöht sich zwangsläufig die Gefahr auf eine zielführende Antwort.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2019, 14:28 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2019 15:55 von Bitklopfer.)
Beitrag #4
RE: Mutliplexing verdrahtung
Stimm, da hast du recht. Das sollte eig ein Widerstand sein. Mein Fehler.

Aber aus meiner eigentlich Frage nehme ich raus, dass es schon Stimmt, wenn LED1 an sein soll, dass A1 HIGH ist A2-A4 LOW. A5 LOW und A5- A14 HIGH sein muss.

"kannst Du unter Umständen den Arduino grillen." genau deswegen wollte ich mich nochmal vergewissern ob mein vorgehen so Stimmt.
Programm seitig ist es um eine variable gesichert, dass nur eine an sein kann.
Beim leuchten einer LED wird diese gesetzt und bei den weiteren Möglichkeit immer abgefragt ob schon "eine LED an" ist


So hatte ich mir das ungefair vorgestellt.
Code:
void loop() {

  digitalRead(In_Start && In_Stop);                //Dücken der Start Taste
  if (In_Start, HIGH && In_Stop, LOW;
  {
    LED_An = 0;
    Stop = 0;
    delay(500);                                    //Entprellen der Start Taste
    Start = 1;
    
  }
  digitalRead(In_Start && In_Stop);
  if (In_Stop, HIGH) && In_Start, LOW;             //Drücken der Stop Taste
  {
    Start = 0);
    Stop = 1);
}


  if (Start == 1);
                      
  {
       if(LED1 != 1 && LED_An !=1 && Stop !=1);
     {
         //LED_1 Leuchtet//
         LED_An = 1;
         digitalWrite(A1,HIGH);
         digitalWrite(A5,LOW);
         delay(200);
         digitalWrite(A1,LOW);
         digitalWrite(A5,HIGH);
         LED_An = 0;
    }
    
       else if(LED1 != 1 && LED_An !=1 && Stop ==1);
    {
         LED1 = 1;
         LED_An = 1;
         digitalWrite(A1,HIGH);
         digitalWrite(A5,LOW);
    }
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2019, 14:48 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2019 16:30 von Tommy56.)
Beitrag #5
RE: Mutliplexing verdrahtung
Stelle Deinen Sketch bitte in Codetags.
Wie das geht, steht hier.

Gruß Tommy

Edit: Schaue Dir mal die Grundlagen zu Bedingungen (if) an. Außerdem solltest Du über die Nutzung eines Arrays nachdenken, in dem Du den Status Deiner 40 LED speicherst. z.B.
0= Aus
1=leuchtet
2=leuchtet nicht mehr

Mal als Denkanstoß ein paar Zeilen Code. Achtung! In der IT fängt man in der Regel bei 0 an zu zählen, nicht bei 1 wie in Deiner Skizze.
Die digitalWrite/pinMode habe ich noch auskommentiert, damit man das Ganze auch ohne LED nur mit Printouts testen kann.

Code:
const byte anzLeds = 40;
const byte anzZeilen = 4;
const byte anzSpalten = 10;
byte leds[anzLeds];  // 0 = aus, 1 = ein, 2 = wieder aus
byte zeilenPins[anzZeilen] = {2,3,4,5}; // anpassen an die reale Schaltung
byte spaltenPins[anzSpalten] = {6,7,8,9,10,11,12,13,14,15}; // anpassen an die reale Schaltung
bool gestartet = false;
byte bearbeiteteLeds = 0;

// alle wieder auf 0
void initLeds() {
  for(byte i=0; i < anzLeds; i++) leds[i] = 0;
  bearbeiteteLeds = 0;
}

// Fürs setup
void initPins() {
  for(byte i=0; i < anzZeilen; i++) {
    // digitalWrite(zeilenPins[i],HIGH);
    // pinMode(zeilenPins[i],OUTPUT);
  }
  for(byte i=0; i < anzSpalten; i++) {
    // digitalWrite(spaltenPins[i],LOW);
    // pinMode(spaltenPins[i],OUTPUT);
  }
  gestartet = false;
}

// Schaltet die vorherige LED ab und die neue an
void setLed(byte nummer) {
  static byte lastLed;
  static byte lastSpalte;
  static byte lastZeile;
  byte zeile,spalte;
  if (gestartet) { // es gab schon eine Ausgabe - also alte LED ausschalten
    // digitalWrite(zeilenPins[lastZeile],HIGH);
    // digitalWrite(spaltenPins[lastSpalte],LOW);
    leds[lastLed] = 2;
  }
  else gestartet = true;
  zeile = nummer / 10;
  spalte = nummer % 10;
  Serial.print(F(" Led: "));Serial.print(nummer);
  Serial.print(F(" Spalte: ")); Serial.print(spalte);
  Serial.print(F(" Zeile: ")); Serial.println(zeile);
  leds[nummer] = 1;
  lastLed = nummer;
  lastSpalte = spalte;
  lastZeile = zeile;
  bearbeiteteLeds++;
  // digitalWrite(zeilenPins[zeile],LOW);
  // digitalWrite(spaltenPins[spalte],HIGH);
}

// Zufällig eine LED wählen, die noch nicht dran war
byte sucheNeueLed() {
byte nummer;
  while(true) {
    nummer = random(anzLeds);
    if (leds[nummer] == 0) return nummer;
  }  
}

void setup() {
  initPins();
  initLeds();
  Serial.begin(115200);
  Serial.println(F("Start"));
}

void loop() {
byte neueLed;
  if (bearbeiteteLeds < anzLeds) {
    neueLed = sucheNeueLed();
    Serial.print(F(" bearbeitete Leds: "));Serial.print(bearbeiteteLeds);
    Serial.print(F(" Neue Led: ")); Serial.print(neueLed);
    setLed(neueLed);
  }  
  delay(1000); // zum Testen
}

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2019, 16:29
Beitrag #6
RE: Mutliplexing verdrahtung
Hallo,

(10.01.2019 11:35)Bau3r schrieb:  Ich verwende ein Arduino Micro (bzw ist bestellt) und werde dann 2 Digitale Eingänge und 14 Ausgänge 11Digital/3Analog verwenden

Mit den 16 Pins geht das gerade so noch ( Bitte Serial, SPI, I2C nur benutzen wenn sie wirklich gebraucht werden ),
aber mit deinen 3 Analogen Ausgängen...
Meintest du PWM Ausgänge, oder Analog Ausgänge ?
Der Micro hat nur Digital / Analog Eingänge, und Digital / PWM Ausgänge.
Echte Analogausgänge hat der nicht.

Hier mal ein Pin Out, welches ich sehr Übersichtlich finde.
[Bild: 1117_arduino_micro_pinout.jpg?h=600&...632AC38D99]
Gruß, Markus

Immer in Stress
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2019, 16:36
Beitrag #7
RE: Mutliplexing verdrahtung
Ich vermute, er meint dass er die analogen Eingänge als binäre Ausgänge benutzt. Das soll der Micro ja auch können.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2019, 16:55
Beitrag #8
RE: Mutliplexing verdrahtung
(10.01.2019 16:36)Tommy56 schrieb:  Ich vermute, er meint dass er die analogen Eingänge als binäre Ausgänge benutzt. Das soll der Micro ja auch können.

Gruß Tommy

Ja, das ist kein Problem.
Nur, hab ich das so verstanden, das er 3 Analog Ausgänge braucht.
Und bei den Arduinos kann man die Ausgänge halt nur Digital oder als PWM definieren.
Wenn PWM gemeint sind, ist es ja gut.
Wenn jedoch richtige analoge Ausgänge gemeint sind, wie von seiner Siemens Logo....
Dann geht das nur mit zusätzlicher Hardware.
( Ein künstlicher Analogausgang aus mehreren Pins und Wiederständen wie es bei der FBAS und PAL Signalerzeugung mit AVR üblich ist halte ich mal außen vor,
da er schon alle anderen Pins verplant hat. )
Gruß, Markus

Immer in Stress
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Bitte um Hilfe bei sauberer Verdrahtung sepp01 10 1.797 20.09.2018 22:40
Letzter Beitrag: hotsystems

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste