7Segment-4Stellig gegen 2Stellig ausgetauscht Anzeige funktioniert nicht mehr

LED Treiber ala MAX7219 oder HT16K33 übergibt, oder gar, eines der vielen fertig Module?

Im Grunde genommen keine schlechte Idee. So was bräuchte ich mit nur 2 Stellen.
Da mein Projekt auch so klein wie möglich werden soll. Am Ende soll die Platine mit den Bauteilen nicht viel größer werden als ein Arduino Nano. Platine dann oben Nano unten. Deshalb bin ich gerade etwas schockiert über die ganzen Widerstände und Transistoren :fearful: .
Aber jaa wenn es nicht anders geht, geht es nicht. Da wäre so ein fertiges Modul wirklich eine gute Lösung.

Das muss nicht super genau ausgerechnet sein.

Ah gut, verstehe.

Aber ob man es so hell möchte...

Na gut so hell muss es nicht sein. Da bin ich lieber etwas schonender und Energie sparender.

ein ht16k33 breakout board ist nicht wirklich größer als ein Nano... schau dir mal die Abmessungen an.

Ah jach, ich werde jetzt mal sehen was ich da mache. Vielleicht bekomme ich ja alles so auf die Platine, dass es nicht zu groß wird. Oder ich muss halt über so eine Modullösung nachdenken.

Ich weiß ja jetzt was ich wissen muss. Ja mal sehen 8) .

OK, dann Danke für hier.

Hallo mal wieder,

habe noch eine Frage zu dieser Schaltung. Würde Sie so funktionieren?

Nein. Bei einem NPN Transitor kommt der Emitter an Masse. Und die Last (in diesem Fall die LEDs) zwischen Kollektor und Betriebsspannung.
Theoretisch musst du nur die Transistoren herumdrehen. Allerdings zeichnet man Schaltpläne normal so dass die Masse unten ist. Und somit auch NPN Emitter wenn möglich unten.

Nimm dieses Bild: https://www.elektronik-kompendium.de/sites/bau/schalt/02012911.gif

Der Pfeil am Emitter gibt an in welche Richtung der Gesamtstrom fließt. IE = IB + IC
Dieser Strom muss logischerweise nach Masse fließen (auf dem Bild 0)

Oder allgemein ohne Stromflüsse so: https://blog.wika.de/know-how/druckschalter-anschluss-pnp-npn-schaltausgang/

Du kannst auch noch mal die Links aus Post #6 mit deinem Plan vergleichen

Ah ok, ja ich hatte auch den Link aus #6 als Vorlage, nur dann hab ich nach einem detailierteren Schaltplan gesucht speziell mit button. Dort war es so. Aber gut jetzt habe ich es verstanden.

OK dankeschön.

mastershredder:
nur dann hab ich nach einem detailierteren Schaltplan gesucht speziell mit button

Teile deine Probleme in Teil-Probleme auf. Die Taster haben rein gar nichts mit den Transistoren zu tun und können getrennt betrachtet werden

Die Taster haben rein gar nichts mit den Transistoren zu tun

Ja, so weit bin ich schon :smiley: . Zu den Transistoren(B) kommt ja durch Software ein Signal von dem Pin.

Hallo, ich melde mich zurück, nun mit
einem Nano
und NPN Transistoren

Nur leider will es nicht funktionieren.
Wenn man über Transistoren redet und verwendet nur einen Buchstaben, dann meint man ja die Mittlere Dotierung. Also bei einem P-Transistor meint man einen NPN Transistor.

Wie es in der Bibliothek steht, habe ich es im Sketch bei sevseg.begin() angegeben.
https://github.com/DeanIsMe/SevSeg

Sorry weiß nicht wie ich im neuen Forum Quellcode einfügen kann.

#include <TimeLib.h>
#include <SevSeg.h>

SevSeg sevseg;
int startBtn=2; //Button pull up
int startBtnSig=0; //Button pull up
int resetBtn=5; //Button pull up
int resetBtnSig=0; //Button pull up
// Zeit und Zeit speicherung
int minuten,saveMinuten;
int sekunden,savSekunden;
// Status Button
int getrueckt,isZmZweiten;
int gestartet=HIGH;

void setup() {
byte digitPins[]={3,4};
byte segmentPins[]={6,7,8,9,10,11,12,13};
bool updateWithDelays = false; // Default 'false' is Recommended
bool disableDecPoint = true;
sevseg.begin(P_TRANSISTORS,2,digitPins,segmentPins,updateWithDelays,disableDecPoint);
sevseg.setBrightness(90);
pinMode(startBtn, INPUT); //Button pull up
digitalWrite(startBtn, HIGH); //Button pull up
pinMode(resetBtn, INPUT); //Button pull up
digitalWrite(resetBtn, HIGH); //Button pull up
}

// Vorsicht alle Variablen sind !Konstanten(Pull up)
void loop() {
startBtnSig=digitalRead(startBtn);
resetBtnSig=digitalRead(resetBtn);

if (startBtnSig==LOW) { // Wenn Taste gedrückt
delay(1000);
getrueckt++;
gestartet=LOW;
isZmZweiten=getrueckt%2;
if (isZmZweiten==0) {gestartet=HIGH;}
}
else {
if (gestartet==LOW) {starten();}
else {setTime(0,saveMinuten,savSekunden,0,0,0); reset();}
}
sevseg.refreshDisplay();
}

void starten() {
minuten=minute();
sekunden=second();
saveMinuten=minuten;
savSekunden=sekunden;
sevseg.setNumber(sekunden);
}

void reset() {
if (resetBtnSig==LOW) {
delay(1000);
saveMinuten=0;
savSekunden=0;
getrueckt=0;
sevseg.setNumber(0);
}
}

Doch leider passiert nichts, wenn ich den Nano anschalte und den StartButton betätige. Das Display bleibt aus.

Hier noch mal mein Schaltungsaufbau:

Hallo,
ist dies jetzt irgend wie eine ungewönliche Sache?

Deine Taster sind immer noch falsch angeschlossen. Die hängen in der Luft. Die andere Seite des Kontakts muss an Masse. Und im Programm musst du INPUT_PULLUP verwenden

Aber du kannst das auch erst mal ohne Taster probieren. Einfach statisch irgendwas ausgeben. Und die Anzeigen kann man auch ohne den µC testen. Das wäre vernünftiger bis es richtig verkabelt ist.

Du musst Bipolar-Transistoren und Feldeffekt-Transistoren unterscheiden. Bei bipolaren wie dem BC337 sagt man sehr wohl NPN und PNP.

Nur P oder N ist für FETs weil da nur die Dotierung des Kanals eine Rolle spielt und man im Grundaufbau nicht diese Schichten wie die klassischen Transistoren hat (wobei es da auch an bestimmten Stellen PN-Übergänge gibt)

OHH :sweat_smile: Ich weiß garnicht wo ich das unterschlagen hab.

OK habe ich gemacht, DENKE das es so richtig ist. Nur auf was muss ich nun sevseg.begin() einstellen.

#include <TimeLib.h>
#include <SevSeg.h>

SevSeg sevseg;
  int startBtn=2;     //Button pull up
  int startBtnSig=0;  //Button pull up
  int resetBtn=5;    //Button pull up  
  int resetBtnSig=0; //Button pull up
// Zeit und Zeit speicherung
  int minuten,saveMinuten;
  int sekunden,savSekunden;
// Status Button
  int getrueckt,isZmZweiten;
  int gestartet=HIGH;
 
void setup() {  
  byte digitPins[]={3,4};
  byte segmentPins[]={6,7,8,9,10,11,12,13};
  bool updateWithDelays = false; // Default 'false' is Recommended
  bool disableDecPoint = true;
  sevseg.begin(P_TRANSISTORS,2,digitPins,segmentPins,updateWithDelays,disableDecPoint);
  sevseg.setBrightness(90);
  pinMode(startBtn, INPUT_PULLUP);         //Button pull up
 // digitalWrite(startBtn, HIGH);     //Button pull up
  pinMode(resetBtn, INPUT_PULLUP);        //Button pull up
 // digitalWrite(resetBtn, HIGH);    //Button pull up
  }

// Vorsicht alle Variablen sind !Konstanten(Pull up)
void loop() {  
  startBtnSig=digitalRead(startBtn);
  resetBtnSig=digitalRead(resetBtn);
  sevseg.setNumber(13);
  
  if (startBtnSig==LOW) {         // Wenn Taste gedrückt
      delay(1000);
      getrueckt++;
      gestartet=LOW;
      isZmZweiten=getrueckt%2;      
      if (isZmZweiten==0) {gestartet=HIGH;}
      }
  else {
       if (gestartet==LOW) {starten();}
        else {setTime(0,saveMinuten,savSekunden,0,0,0); reset();}
        }
  sevseg.refreshDisplay();  
}

void starten() {
  minuten=minute();
  sekunden=second();          
  saveMinuten=minuten;
  savSekunden=sekunden;
  sevseg.setNumber(sekunden);          
}

void reset() {
  if (resetBtnSig==LOW) {
      delay(1000);      
      saveMinuten=0;      
      savSekunden=0;
      getrueckt=0;  
      sevseg.setNumber(0);
      }
}

Siehe hier: GitHub - DeanIsMe/SevSeg: Seven segment display controller library for Arduino

  • N_TRANSISTORS - If you use N-type transistors to sink current (or any other active-high, low-side switches).
  • P_TRANSISTORS - If you use P-type transistors to supply current (or any other active-low, high-side switches).
  • NP_COMMMON_CATHODE - If your setup uses N-type AND P-type transistors with a common cathode display.
  • NP_COMMMON_ANODE - If your setup uses N-type AND P-type transistors with a common anode display.

Also wahrscheinlich N_TRANSISTORS. Du hast einen "low side switch" weil die Last oben hängt und gegen Masse geschaltet wird.
Ich nehme mal an bei den unteren zwei Versionen geht es um die Polarität für die Ansteuerung der PNPs die du nicht hast. Du kannst ja auch die verschiedenen Optionen durchprobieren

Bei den Tastern musst du übrigens mit den Kontakten aufpassen. Bei den mit 4 Pins sind immer zwei fest miteinander verbunden und die andere Seite wird erst beim Tastendruck verbunden. Das kann man mit einem Multimeter einfach messen. Du willst natürlich nicht die zwei zusammengehörenden Pins mit Plus und Minus verbinden.

Habe ich getan nur leider will es immer noch nicht.

Wie kann ich das den Messen?

Ohm-Meter oder Durchgangsprüfer. Einen Pin nehmen und dann sehen welcher andere Pin damit verbunden ist.

OK, danke. Das stimmt wie erwartet.

Aber ich traue dem Segment-Display nicht wirklich. Das 4 stellige(Anode) war so einfach das hat direkt funktioniert. Das hier (kathode) macht irgend wie nicht, dass was es soll. Ich habe noch ein anderes 2 stelliges(kathode) das ist nur von der Größe her größer. Ich probiere es mal mit dem und mache mal noch ein Paar andere Tests weg von der Schaltung.

:partying_face: :partying_face: :partying_face:

Ja es war das Display. Habe das andere drangemacht und hat auf Anhieb geklappt.

Habe es jetzt zwar erst am UNO( bei mir der einfachheit halber) getestet aber ich denke das sollte beim NANO nichts anderes sein.

Perfekt, ich drücke die Taster und alles macht, dass was es soll. Habe "N_TRANSISTORS" verwendet.

MMMHHH, irgend wie ist hier der Wurm drin :smile:.

Habe das Ganze jetzt am Nano angeschlossen und jetzt geht wieder nichts mehr.

Aber eine Frage vorraus: Funtioniert der NANO auch schon wenn ich die Pins noch nicht angelötet habe(also nur Pins auf Steckbrett und Nano draufgelegt)? Und muss ich auch alle anschließen oder kann ich die Sechs am oberen Ende weglassen?

Einfache Frage - einfache Antwort: Nein.

Ok, dann bin ich ja mal zur Hälfte beruhigt.

Aber wie ist das, kann ich die Pins statt wie normal Unterseite lange Pins nach unten. Die Pins um 180° drehen und auf die Oberseite stecken und anlöten? Und kann ich die sechs extra stehenden weglassen?