Atmega8-Spannungswert an LED-Reihe ausgeben.

Gast #507531
Lesenswert?
• ▲
▼
Hallo zusammen!
Fange gerade mit dem Programmieren an.
Hab mal ne Frage:
Ich will einen Spannungswert an eine LED-Zeile ausgeben...
Habe folgenden Code gefunden, funktioniert soweit auch prima.
Wie stelle ich es an das ich noch mehr leds anschließen kann?
Z.B. an Port D.

#include <avr/io.h>

double Leds[] =
{    0b00000000000,
  0b00000000001,
  0b00000000011,
  0b00000000111,
  0b00000001111,
  0b00000011111,
  0b00000111111,
  0b00001111111,
  0b00011111111,
  0b00100000000,

};

 FACT =( ( 1024 / ( sizeof( Leds ) / sizeof(*Leds) ) ) + 1 );

int main()
{
  int Value = 0;

  DDRB = 0xFF;
  ADCSRA = ( 1 << ADEN ) | ( 1 << ADPS2 ) | ( 1 << ADPS1 );
  ADMUX = ( 1 << MUX0 );

  ADCSRA |= ( 1 << ADSC );
  while( ADCSRA & ( 1 << ADSC ) )
    ;

  while( 1 )
  {
    ADCSRA |= ( 1 << ADSC );
    while( ADCSRA & ( 1 << ADSC ) )
      ;

    Value = ADC;
    PORTB = Leds[ Value / FACT ];

  }
}

Mfg
Sascha P.
#507958
Lesenswert?
• ▲
▼
> FACT =( ( 1024 / ( sizeof( Leds ) / sizeof(*Leds) ) ) + 1 );

auch interessant...
weder ein #define noch sonst irgendwas dabei, was für einen sinnvollen 
Zusammenhang sorgen würde.

>Wie stelle ich es an das ich noch mehr leds anschließen kann?
>Z.B. an Port D.

Erweitere "dein" Array auf 16bit und teile die 16bit auf 2 Ports auf.
#508343
Lesenswert?
• ▲
▼
Sascha P. wrote:
> Wie könnte man es denn eleganter lösen??

Indem man den passenden Datentyp nimmt, also:

uint8_t für 8 Bit
uint16_t für 16 Bit
uint32_t für 32 Bit


Float hat aber nun absolut überhaupt nichts bei Bitmanipulationen 
verloren.

Es sei denn, Du willst Dich wie andere beschweren, daß C ineffektiv ist.


Peter

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.