mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Siebensegmentanzeige ansteuern


Autor: Xob Teab (milirp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo.
Immer wenn ich diesen Sketch auf meinen Arduino Uno hochladen will, 
erscheint mir eine Fehler Meldung beim Kompilieren :

#define LED 8
byte segments[] = {
  B01111110,
  B00110000,
  B01101101,
  B01111001,
  B00110011,
  B01011011,
  B01011111,
  B01110000,
  B01111111,
  B01111011};

void setup()
{
  pinMode (LED, OUTPUT);
  for (int i=0 ; i <=7; i++){
    pinMode (i, OUTPUT);
  }
}

void loop(int h)
{
  digitalWrite (LED, HIGH);
 PORTD = segments[h];
}


oder hat vielleicht jemand Noch andere Tipps eine Siebensegmentanzeige 
einfach über den Arduino anzusteuern?

Vg. mili

Autor: MaWin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habt gedult M. schrieb:
> Immer wenn ich diesen Sketch auf meinen Arduino Uno hochladen will,
> erscheint mir eine Fehler Meldung beim Kompilieren :
> void loop(int h)

Wundert mich nicht.

Welchen Sinn soll der Unsinnscode denn überhaupt haben ?

Autor: Arduinoquäler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habt gedult M. schrieb:
> erscheint mir eine Fehler Meldung beim Kompilieren

Ja welche denn?

Autor: Christian M. (chrigi001)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habt gedult M. schrieb:
> void loop(int h)

Hast du den int h auch im Funktionsprototypen der Loop Funktion 
definiert und übergibst du beim Aufruf von der Loop Funktion auch ein 
Wert für h?

Wieso verwendest du teilweise die Arduino Portfunktionen und teilweise 
direkten Registerzugriff um den Port anzusteuern?

Es währe natürlich einfacher dir zu helfen wenn wir wüssten was in der 
Fehlermeldung steht.

Autor: Arduinoquäler (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Christian M. schrieb:
> Hast du den int h auch im Funktionsprototypen der Loop Funktion
> definiert und übergibst du beim Aufruf von der Loop Funktion auch ein
> Wert für h?

Er hat überhaupt nichts programmiert sondern einen
Sketch genommen (übernommen) und versucht ihn zu laden.

Autor: Christian M. (chrigi001)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Arduinoquäler schrieb:
> Er hat überhaupt nichts programmiert sondern einen
> Sketch genommen (übernommen) und versucht ihn zu laden.

Das vermute ich zwar auch aber mit diesen Stichwörtern und Google sollte 
er eine weile beschäftigt sein. Und es sollte eigentlich reichen um das 
Problem zu lösen.

: Bearbeitet durch User
Autor: Arduinoquäler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Christian M. schrieb:
> sollte er eine weile beschäftigt sein.

Diese kühne Annahme setzt vorraus dass er sich mit
dem Suchen überhaupt beschäftigen wird .....

Autor: Xob Teab (milirp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich habe ihn von dieser Seite :

http://tronixstuff.com/2011/10/22/tutorial-arduino...

Autor: Draco (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Habt gedult M. schrieb:
> also ich habe ihn von dieser Seite :
>
> http://tronixstuff.com/2011/10/22/tutorial-arduino...

Wenn man nichtmal richtig abschreiben kann... tut es dann schon wirklich 
richtig weh. Und richtig schmerzen tut es dann... wenn derjenige noch 
mit der Nase reingedrückt wird, und reagiert nichtmal drauf.

Echt...! Setz dich mit dem Thema programmieren auseinander. Egal ob C, 
C++, Basic oder dieser ArduinoQuark. Mit Zeilen zusammenschnippeln, das 
auch noch falsch, wirst du nicht weit kommen.

Autor: Matthias S. (Firma: matzetronics) (mschoeldgen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Arduino Welt kann man loop() kein Argument übergeben, das ist 
das, was wir anderen C Programmierer die Hauptschleife nennen.

Du bastelst dir am besten eine Unterroutine, die das Schreiben aufs 
7-Segment übernimmt. Das kann z.B. so aussehen:
void Wr_7Seg(uint8_t number, uint8_t LEDState) {
  PORTD = segments[number];
  if (LEDState) PORTD |= 0b10000000; 
  else PORT &= 0b01111111;
}

void loop(void) {
uint8_t n,state = 0;
for (n=0;n<10;n++) {
    Wr_7Seg(n,state);
    _delay_ms(500);
    state = 1 - state;
   }
}
Ich kenne den Dialekt von Arduino nicht so, aber gültiges C sollte es 
sein.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.