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:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
8 LED , 7-Segment-Elemente einzeln ansteuern beim tm1638 und die Buttons
15.01.2016, 22:37 (Dieser Beitrag wurde zuletzt bearbeitet: 15.01.2016 23:30 von arduinofan.)
Beitrag #1
8 LED , 7-Segment-Elemente einzeln ansteuern beim tm1638 und die Buttons
Ansteuerung ohne die Librarie:
7-Segment, Led und die Buttons

Hier kann man alle Segmente einer Anzeige einzeln ansteuern.

Das ist die erste 7-Segment-Anzeige (links):
shiftOut(data, clock, LSBFIRST, 0xc0); // 0xce ist die 8. Anzeige rechts.
Hier kommt der Wert rein 0-255 :
shiftOut(data, clock, LSBFIRST, 0x01);

LED 1 - 8 :
shiftOut(data, clock, LSBFIRST, 0xc1); // 0xc3, 0xc5 usw.
shiftOut(data, clock, LSBFIRST, 0x01);


Code:
const int strobe = 24;
const int clock = 23;
const int data = 22;

void sendCommand(uint8_t value)
{
  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, value);
  digitalWrite(strobe, HIGH);
}

void reset()
{
  sendCommand(0x40);
  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc0);  
  for(uint8_t i = 0; i < 16; i++)
  {
    shiftOut(data, clock, LSBFIRST, 0x00);
  }
  digitalWrite(strobe, HIGH);
}

void setup()
{
  pinMode(strobe, OUTPUT);
  pinMode(clock, OUTPUT);
  pinMode(data, OUTPUT);

  sendCommand(0x8f);
  reset();
}

void loop()
{
  sendCommand(0x44);

// acht 7-Segmente
  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc0);
  shiftOut(data, clock, LSBFIRST, 0x01);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc2);
  shiftOut(data, clock, LSBFIRST, 0x02);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc4);
  shiftOut(data, clock, LSBFIRST, 0x04);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc6);
  shiftOut(data, clock, LSBFIRST, 0x08);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc8);
  shiftOut(data, clock, LSBFIRST, 0x10);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xca);
  shiftOut(data, clock, LSBFIRST, 0x20);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xcc);
  shiftOut(data, clock, LSBFIRST, 0x40);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xce);
  shiftOut(data, clock, LSBFIRST, 0x80);
  digitalWrite(strobe, HIGH);

// acht LED

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc1);
  shiftOut(data, clock, LSBFIRST, 0x01);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc3);
  shiftOut(data, clock, LSBFIRST, 0x01);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc5);
  shiftOut(data, clock, LSBFIRST, 0x01);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc7);
  shiftOut(data, clock, LSBFIRST, 0x01);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xc9);
  shiftOut(data, clock, LSBFIRST, 0x01);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xcb);
  shiftOut(data, clock, LSBFIRST, 0x01);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xcd);
  shiftOut(data, clock, LSBFIRST, 0x01);
  digitalWrite(strobe, HIGH);

  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0xcf);
  shiftOut(data, clock, LSBFIRST, 0x01);
  digitalWrite(strobe, HIGH);

}

Hier die Abfrage der Buttons:
Code:
const int strobe = 24;
const int clock = 23;
const int data = 22;

uint8_t buttons;

void setup()
{
  pinMode(strobe, OUTPUT);
  pinMode(clock, OUTPUT);
  pinMode(data, OUTPUT);

  Serial.begin(9600);
}

uint8_t readButtons(void)
{
  uint8_t buttons = 0;
  digitalWrite(strobe, LOW);
  shiftOut(data, clock, LSBFIRST, 0x42);

  pinMode(data, INPUT);

  for (uint8_t i = 0; i < 4; i++)
  {
    uint8_t v = shiftIn(data, clock, LSBFIRST) << i;
    buttons |= v;
  }

  pinMode(data, OUTPUT);
  digitalWrite(strobe, HIGH);
  return buttons;
}

void loop()
{
  buttons = readButtons();
  Serial.println(buttons);

  delay(200);

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


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino 2 schrittmotoren ansteuern super47 3 117 03.12.2016 14:31
Letzter Beitrag: Franz54
  Fehler beim Kompilieren binderj1 5 292 03.10.2016 21:27
Letzter Beitrag: hotsystems
  Ansteuern eines Schrittmotors Uwe1475 28 1.012 03.09.2016 21:03
Letzter Beitrag: Uwe1475
  Fehler beim Speichern von Projekten Manni66 16 683 23.08.2016 10:05
Letzter Beitrag: hotsystems
  Arduino hängt beim Upload deranda 11 500 12.08.2016 21:27
Letzter Beitrag: hotsystems
  Adafruit SD-master / logger shield: Fehler beim 2. Kompilieren kl-ing 3 332 06.06.2016 16:07
Letzter Beitrag: Bitklopfer
  Hilfe beim Arduino Shield reimundko 6 455 05.06.2016 11:28
Letzter Beitrag: rpt007
  Thermometer mit 7 Segment Anzeige ottii50 53 1.528 31.05.2016 18:43
Letzter Beitrag: ottii50
  Virtuelle Instrumente ansteuern mit Arduino.. arduinopeter 1 273 29.04.2016 12:51
Letzter Beitrag: tiny85fan
  RX/TX als dig. Eingänge beim Mega 2560 benutzen? alpenpower 0 328 22.03.2016 12:13
Letzter Beitrag: alpenpower

Gehe zu:


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