-
        

+ Antworten
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 31

Thema: Zusammstellung: GPS + WiFi + 7-Segment 4-Digit LCD

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.382
    Anzeige

    bare metal, also ohne irgend ein framework, sondern mit dem befehlssatz des compilers für den entsprechenden chip

    index ist der zeiger in einem array

    port ist eine input output peripherie, pins werden üblicherweise in ports gruppiert die dann über register gesteuert werden ... pins pro port ist meist identisch mit der prozessor architektur, also 8bit prozessor = 8 pins pro port

    das schreiben in ein register ist atomar, benötigt nur einen einzigen prozessorcycle/takt, das setzen von 8 pins gleichzeitig dauert als nur 1takt ... wenn cih jetzt einen einzelnen pin ändern möchte müsste ich das sog. "read-modify-write" verfahren nehmen, ich lese das register aus, verändere den pin meiner wahl und schreibe das register zurück ... also würde es mindestens 3 takte dauern (meist mehr wegen diversen mathematischen operationen um das richtige bit zu maskeiren und zu setzen) ... ich würde also für das einzelne setzen der pins mind. die 32fache (8*4takte) zeit brauchen

    da du mit arduino ein framework benutzt kommt du garnicht erst auf einfachem wege an die register und hast eh keine chance ohne weiteres arbeiten die ports direkt zu steuern (zumal du dein framework verwirren würdest wenn du es machst)

    0b0001 ist binärschreibweise, du schreibst das zahlenwort also bit für bit: 0b0001 wäre ein 4 bit wort (die fehlenden bits werden mit 0 aufgefüllt) und entspräche der zahl 1 0b0010 wäre ein 2 und 0b0011 eine 3 zum beispiel

    ich habe bei meinem display quasi eine schleife die pro voller millisekunde folgendes macht

    Code:
    //uint8_t bedeutet 8bit wort ohne vorzeichen
    
    uint8_t digit = 0b0001; //startzustand erste ziffer
    uint8_t lookup[10]; //array mit segmentkombinationen für die ziffern 0-9
    uint8_t digitmask = 0b01111; //ich maskiere die ungebrauchten bits aus, könnten ja noch andere komponenten dran hängen
    uint8_t zifferwert = 0; //darzustellende ziffer von 0-9, ändert sich je nach ausgewähltem digit auf dem display und deiner anwendung
    
    //das display hängt mit den segmenten an PORTx des controller und die ziffern massen jeweils an den unteren 4 bit des PORTy
    
    ...
    
    while(TRUE) //endlossschleife im controller, darf nie enden
    {
       while(!1ms_timeup) nop(); //tot schleife bis 1ms zeit abgelaufen 1khz updaterate fürs display / 4 ziffern = 250hz display refresh rate
       PORTy = digit;
       if((digit & digitmask) == 0b01000) digit = 0b0001; //zurücksetzen wenn das letzte digit erreicht ist
       else digit = digit << 1; //bitshift links um 1, damit wird aus 0b0001 z.b. 0b0010 oder daraus dann 0b0100
       PORTx = lookup[ziffer]; //schiebt die segmentkombination die deiner darzustellenden ziffer entspricht in das register für die segmente
    }
    im code fehlt jetzt natürlich der part der ziffer mit dem ausgewählten digit im display korreliert und deinen eingegebenen zahlenwert in 4 ziffern umrechnet
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  2. #12
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2017
    Beiträge
    14
    Danke für die ausführliche Antwort. Hängen geblieben ist bei mir, dass ich den NodeMCU nicht im bare metal Stil beschreiben kann, richtig?

  3. #13
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.382
    können ja, wollen eher nein, da braucht es erstmal ein bisschen erfahrung und genug langeweile um sich durch das datenblatt des controller zu wühlen, eine entwicklungsumgebung passend zum controller zu installieren (meist reicht eclipse für C programmierung), den compiler einzurichten ind er umgebung (ist einfacher wenn man die IDE des chip hersteller nimmt) und natürlich ein programmiergerät für den chip oder eine anleitung wie du das NodeMCU über USB flashen kannst wenn du ein eigenes binary compilierst.

    ich erahne schon die vielen fragezeichen und rate erstmal zu kleineren schritten mit arduino

    später suchst du dir dann mal einen blog oder ein how-to wie man eben mit hilfe von arduino eben bare-metal programmiert und das board damit bespielt, das ist etwas komplizierter und erfordert eine etwas ausschweifende anleitung
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2017
    Beiträge
    14
    Haha, ok. Aber ich Suche ja eigentlich eine möglichst einfache Art, das selbst herzustellen. Ich habe dieses Teil gefunden, welches scheinbar nur 3 Steckplätze benötigt: https://eckstein-shop.de/8-Digit-LED...95-for-Arduino
    Weiß du, ob das mit dem NodeMCU kompatibel ist? Damit sollte ich dann doch auf einfache Art und Weise die Zahl ausgeben können.

  5. #15
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.10.2014
    Beiträge
    2.449
    bei nodeMCU kann man von vornherein NIE sicher sen, ob angeschlossene Geräte auf Anhieb funktionieren wie bei "normalen" Arduinos. Vielfach sind Lib-Anpassungen nötig, gerade was Timing (z.B. durch extra eingefügte oder angepasste delay() ) und Bus-Konfigurationen angeht (z.B. für I2C, aber auch für 1-Wire etc.).
    Da hilft nur:
    - entweder in nodeMCU Foren oder Repositories gezielt nach nodeMCU Treibern suchen,
    oder
    - riskiere es, kaufe es, und bete, dass es doch funktioniert
    ·±≠≡≈³αγελΔΣΩ∞ Schachroboter:www.youtube.com/watch?v=Cv-yzuebC7E Rasenmäher-Robot:www.youtube.com/watch?v=z7mqnaU_9A8

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    33
    Beiträge
    2.382
    das display kannst du nutzen, es arbeitet mit sog. port expandern

    das ist das seriell angesteuerte äquivalent zweier 8bit PORTs an einem controller, du schiebst seriell bitmuster in die "register" und die ausgänge schalten dann entsprechend um

    insgesamt schiebst du ein 16bit wort über die serielle schnittstelle (nciht unbedingt uart), die ersten 8bit kommen über DIO in den oberen chip, welcher die segmente ansteuert und die erstlichen 8bit gehen per "daisy chain" (daisy duck, schnattert gerne) an den 2ten chip, der die digits durchsteuert
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2010
    Beiträge
    146
    Hi,

    hier nun mal eine kleine Übung von sunfounder da siehst du viele Pins du benötigst, wenn du eine normale 4*7Segment nimmst. Bleibt ja dann noch das Prob mit den WLAN ?

    https://www.sunfounder.com/learn/les...r-arduino.html
    cYa pig

  8. #18
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2010
    Beiträge
    146
    Hi TFlow,

    einfach weil es mich persönlich interessiert hat habe ich das Sunfounder Beispiel als Grundlage genommen und nen TestAufbau für nen NodeMCU gemacht.

    Damit ist der NodeMCU aber an der Grenze der zu benutzenden Pins.

    http://piggitux.ignorelist.com:8085/..._4_7Digits.mp4

    Daher danke nochmal für die Fragestellung und viel Erfolg bei deinem Projekt.
    Angehängte Grafiken Angehängte Grafiken
    Geändert von piggituX (08.12.2017 um 00:09 Uhr)
    cYa pig

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    23.11.2017
    Beiträge
    14
    Hallo zusammen,

    ich bin weiter gekommen und stehe vor dem nächsten Problem. Ich habe mir dieses Teil gekauft: https://eckstein-shop.de/8-Digit-LED...95-for-Arduino und bekomme es auf dem Sunfounder UNO R3 zum laufen. Das Board hat leider kein WiFi. Auf dem WeMos D1 sowie dem NodeMCU (beide mit Wifi) kommt nur Kauderwelsch aufs Display. Gibt es dafür eine einfache Erklärung? Ist es evtl. einfacher mit dem UNO R3 zu arbeiten und ein externes WiFi-Modul anzuschließen?

    Vielen Dank für eure Hilfe!

  10. #20
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    14.12.2010
    Beiträge
    146
    Hi,

    wie gesagt wenn du ein NodeMCU nimmst, benötigst du andere Libs die vom normalen Arduino sind nicht zwingend kompatibel auf nem NodeMCU. generell wäre es interessant zu wissen wie du es angeschlossen hast, und wie dein ProgramCode aussieht.
    Wenn es auf dem Arduino läuft, wäere es erstmal aus meiner Sicht einfacher das Beispiel vllt auf den NodeMCU zu portieren, bevor du nun noch nen Wifi Shield kaufst.

    *wave
    cYa pig

+ Antworten
Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Ähnliche Themen

  1. nochmal digit. Oszi JYETech 096
    Von HaWe im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 08.01.2017, 01:35
  2. Arduino Uno WiFi
    Von Holle1976 im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 04.01.2017, 18:02
  3. 8-Digit 7-Segmentanzeige am ATM128 ...der Startschuss fehlt für Code
    Von oderlachs im Forum Software, Algorithmen und KI
    Antworten: 5
    Letzter Beitrag: 15.02.2016, 10:49
  4. induktive Drehzahlsensor + digit. Anzeigegerät als Impulsnehmer
    Von Collage im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 0
    Letzter Beitrag: 03.11.2013, 21:51
  5. Suche ein LCD mit nur einem digit
    Von Tryan im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 4
    Letzter Beitrag: 14.04.2009, 18:52

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •