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
MAX7221 mit gemeinsamer Anode und Problem Dezimalpunkt
29.01.2021, 19:33
Beitrag #9
RE: MAX7221 mit gemeinsamer Anode und Problem Dezimalpunkt
Danke. Das habe ich schon ausprobiert:
diese Stelle bleibt dunkel und im seriell Monitor wird nur wechselseitig 128 bzw 129 angezeigt
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.01.2021, 20:14
Beitrag #10
RE: MAX7221 mit gemeinsamer Anode und Problem Dezimalpunkt
IdeaIdeaIdeaIdeaIdea
Code:
void loop() {
  val = analogRead(analogPin); // Eingang auslesen
  anzeige(val , 11);
  MAX7219Send(8,4); // xxxx.xA
  delay(3000);

  val = analogRead(analogPin); // Eingang auslesen
  val = val * 5;
  anzeige(val , 10);
  MAX7219Send(8,16);  // xx.xxxU
  delay(3000);
}

Das ist die Lösung. Genau so will ich es. SmileSmileSmileSmileSmile
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
29.01.2021, 23:27
Beitrag #11
RE: MAX7221 mit gemeinsamer Anode und Problem Dezimalpunkt
(29.01.2021 20:14)daja64 schrieb:  IdeaIdeaIdeaIdeaIdea
Code:
void loop() {
  val = analogRead(analogPin); // Eingang auslesen
  anzeige(val , 11);
  MAX7219Send(8,4); // xxxx.xA
  delay(3000);

  val = analogRead(analogPin); // Eingang auslesen
  val = val * 5;
  anzeige(val , 10);
  MAX7219Send(8,16);  // xx.xxxU
  delay(3000);
}

Das ist die Lösung. Genau so will ich es. SmileSmileSmileSmileSmile

So ganz ohne den kompletten Sketch zu zeigen versteht niemand das Fragment aus Beitrag #10. Mit dem kompletten Sketch würde vermutlich auch der Hinweis auf den seriellen Monitor aus Beitrag #9 verständlicher. Im Sketch vom Eingangspost ist nämlich auch nicht zu erkennen was, an welcher Stelle im Programm, zum seriellen Monitor ausgegeben wird.

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
30.01.2021, 11:07
Beitrag #12
RE: MAX7221 mit gemeinsamer Anode und Problem Dezimalpunkt
Also ich war der Annahme das es ersichlich ist das nur in der loop was geändert wurde.
Aber egal hier der Code mit Serial wo dann die 3. Stelle dunkel blieb
Code:
// Controlling a common anode 4 digit 7seg display with the Max7219
// David Barton, 2016

#include <SPI.h>

// The Max7219 Registers :

#define DECODE_MODE   0x09
#define INTENSITY     0x0a
#define SCAN_LIMIT    0x0b
#define SHUTDOWN      0x0c
#define DISPLAY_TEST  0x0f

byte chip_select = 10; // spi chip select pin
byte display_num[6];  // array to hold our 6 digits

// standard 7 seg display numbers
byte number_seg[] =
{
  0b00111111,  // 0
  0b00000110,  // 1
  0b01011011,  // 2
  0b01001111,  // 3
  0b01100110,  // 4
  0b01101101,  // 5
  0b01111101,  // 6
  0b00000111,  // 7
  0b01111111,  // 8
  0b01100111,  // 9
  0b00111110,  // V
  0b01110111   // A
};

int analogPin = 3; // Potentiometer Schleifer am Pin A3
int val = 0; // Variable um Messergebnis zu speichern

void MAX7219Send(byte address, byte value)
{
  digitalWrite(chip_select, LOW);  // Ensure LOAD/CS is LOW
  SPI.transfer(address);  // Send the register address
  SPI.transfer(value);  // Send the value
  digitalWrite(chip_select, HIGH);  // Tell chip to load in data
}

void setup()
{
  pinMode(chip_select, OUTPUT); // chip select
  Serial.begin(9600);
  SPI.begin();

  // set up max7219
  MAX7219Send(DISPLAY_TEST, 0x01);
  MAX7219Send(DECODE_MODE, 0x00);  // Disabled BCD mode
  MAX7219Send(INTENSITY, 0x04);  // brightness
  MAX7219Send(SCAN_LIMIT, 0x07);  // Scan
  MAX7219Send(SHUTDOWN, 0x01);  // Turn on chip

  delay(1000);
  MAX7219Send(DISPLAY_TEST, 0x00);
  anzeige(0, 0);
}

void anzeige(word x , byte A_V) { // A_V für die Einheit

  display_num[0] = A_V;              // 6 stellig  reHand
  display_num[1] = (( x / 1) % 10);
  display_num[2] = (( x / 10) % 10);
  display_num[3] = (( x / 100) % 10);
  display_num[4] = (( x / 1000) % 10);
  display_num[5] = (( x / 10000) % 10); //         liHand
  
    display_num[3] = display_num[3] | 0b10000000;  // z.b. Dp 3. Stelle
    
    Serial.println(display_num[3]);
  
  for (byte segment = 1; segment <= 8; segment++)
  {
    // build the byte to send
    byte pos = 0b00000000;
    for (byte digits = 0; digits < 6; digits++)
    {
      // die ausgewählte Zahl angezeigt wird das Segmentbit an der akt. Pos von 'Segment' angezeigt
      bool seg = number_seg[display_num[digits]] & (0b00000001 << (segment - 1) );
      //                    |- hier kommt die Zahl rein
      //set this bit in our pos byte
      pos = pos | (seg << digits);
      MAX7219Send( segment, pos);
    }
  }
}

void loop() {
  val = analogRead(analogPin); // Eingang auslesen
  anzeige(val , 11);
  delay(3000);
  
  val = analogRead(analogPin); // Eingang auslesen
  val = val * 5;
  anzeige(val , 10);
  delay(3000);
}

Und so ist er das es funktioniert:
Code:
// Controlling a common anode 4 digit 7seg display with the Max7219
// David Barton, 2016

#include <SPI.h>

// The Max7219 Registers :

#define DECODE_MODE   0x09
#define INTENSITY     0x0a
#define SCAN_LIMIT    0x0b
#define SHUTDOWN      0x0c
#define DISPLAY_TEST  0x0f

byte chip_select = 10; // spi chip select pin
byte display_num[6];  // array to hold our 6 digits

// standard 7 seg display numbers
byte number_seg[] =
{
  0b00111111,  // 0
  0b00000110,  // 1
  0b01011011,  // 2
  0b01001111,  // 3
  0b01100110,  // 4
  0b01101101,  // 5
  0b01111101,  // 6
  0b00000111,  // 7
  0b01111111,  // 8
  0b01100111,  // 9
  0b00111110,  // V
  0b01110111   // A
};

int analogPin = 3; // Potentiometer Schleifer am Pin A3
int val = 0; // Variable um Messergebnis zu speichern

void MAX7219Send(byte address, byte value)
{
  digitalWrite(chip_select, LOW);  // Ensure LOAD/CS is LOW
  SPI.transfer(address);  // Send the register address
  SPI.transfer(value);  // Send the value
  digitalWrite(chip_select, HIGH);  // Tell chip to load in data
}

void setup()
{
  pinMode(chip_select, OUTPUT); // chip select
  Serial.begin(9600);
  SPI.begin();

  // set up max7219
  MAX7219Send(DISPLAY_TEST, 0x01);
  MAX7219Send(DECODE_MODE, 0x00);  // Disabled BCD mode
  MAX7219Send(INTENSITY, 0x04);  // brightness
  MAX7219Send(SCAN_LIMIT, 0x07);  // Scan
  MAX7219Send(SHUTDOWN, 0x01);  // Turn on chip

  delay(1000);
  MAX7219Send(DISPLAY_TEST, 0x00);
  anzeige(0, 0);
}
void anzeige(word x , byte A_V) { // A_V für die Einheit

  display_num[0] = A_V;              // 6 stellig  reHand
  display_num[1] = (( x / 1) % 10);
  display_num[2] = (( x / 10) % 10);
  display_num[3] = (( x / 100) % 10);
  display_num[4] = (( x / 1000) % 10);
  display_num[5] = (( x / 10000) % 10); //         liHand
  
  for (byte segment = 1; segment <= 8; segment++)
  {
    // build the byte to send
    byte pos = 0b00000000;
    for (byte digits = 0; digits < 6; digits++)
    {
      // die ausgewählte Zahl angezeigt wird das Segmentbit an der akt. Pos von 'Segment' angezeigt
      bool seg = number_seg[display_num[digits]] & (0b00000001 << (segment - 1) );
      //                    |- hier kommt die Zahl rein
      //set this bit in our pos byte
      pos = pos | (seg << digits);
      MAX7219Send( segment, pos);
    }
  }
}

void loop() {
  val = analogRead(analogPin); // Eingang auslesen
  anzeige(val , 11);
  MAX7219Send(8,4); // xxxx.xA
  delay(3000);
  
  val = analogRead(analogPin); // Eingang auslesen
  val = val * 5;
  anzeige(val , 10);
  MAX7219Send(8,16);  // xx.xxxU
  delay(3000);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Problem Relaisplatine Maui 14 985 23.03.2021 15:20
Letzter Beitrag: hotsystems
  Problem mit "pow" awillib 9 821 27.02.2021 19:22
Letzter Beitrag: Tommy56
  Pwm Problem safitom 4 492 20.02.2021 12:14
Letzter Beitrag: safitom
  Problem mit "Keyboard" und "Mouse" LK2567 4 560 03.02.2021 16:11
Letzter Beitrag: MicroBahner
  const char zu int Konvertierung Problem Lumplux 1 370 02.02.2021 10:26
Letzter Beitrag: Lumplux
  Arduino Uno+ Ethernetshield W5100 Website Problem Justus S. 9 828 31.01.2021 17:37
Letzter Beitrag: Tommy56
  LCD via I2C Backlight-Problem Herby007 10 1.014 06.01.2021 14:46
Letzter Beitrag: Herby007
  OLED Bildschirm Problem JoeIsFame 79 3.408 04.01.2021 06:41
Letzter Beitrag: Bitklopfer
  Problem mit Variablen & Ergebnis rev.antun 11 894 26.11.2020 15:47
Letzter Beitrag: rev.antun
  Nextion Senden von Variablen Problem Tesla 10 1.394 08.11.2020 13:13
Letzter Beitrag: Tesla

Gehe zu:


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