ADC Werte (Formel)?

Gast #2205386
Lesenswert?

Hi ich hab folgendes Problem ich bekomme ja bei meinem ADC Werte von 
0...255 ,

bei 0 will ich eine Schleife 100 mal durchlaufen lassen
.
.
.
bei 127, 150 mal und
.
.
.
bei 255, 200 mal


hat jemand eine Idee wie ich für alle Schritte eine Art Formel oder so 
bekomme ich steh nämlich gerade aufm Schlauch alles einzeln eingeben 
wäre die doofste Lösung ! :-)

Danke
#2205409
Lesenswert?

DhscR schrieb:
> eine Art Formel oder so

((AdcValue * 100) / 255) + 100

Mathematisch musst du AdcValue durch 2,55 teilen, damit wird es aber auf 
dem AVR problematisch, da der nicht gerade ein Rechengenie ist. Mit 
obiger Formel kannst alles mit Integer rechnen, sofern du mit den 
Rundungsfehlern leben kannst.

Noch einfacher wird es mit ((AdcValue * 100) / 256) + 100. Dann kannst 
du dir das dividieren ersparen indem du ((AdcValue * 100)  >> 8) + 100 
rechnest.

Wie schon gesagt, wenn du mit den Rundungsfehlern leben kannst. Es wird 
eben immer abgerundet, bzw. abgeschnitten.

mfg.
#2206905
Lesenswert?

DhscR schrieb:
> Ok hab es mit delay Versucht nur nimmt er mir Jetzt kein DDRB an und die
> Ports lassen sich nicht mehr ansteuern ?
>
> (wenn ich bei AVR-Studio Simuliere)

delays kannst du im AVR-Studio vergessen. So ein delay auf zb 1 
Millisekunde bedeutet, dass der µC ein paar Hundertausend mal in einer 
Schleife Däumchen drehen muss. Da simuliert sich der Simulator zu Tode. 
(Es geht schon, nur dauert die Simulation der Warteschleife entsprechend 
lange).

Brenne es in den Tiny, häng dein Servo an, sorg für eine stabile 
Versorgungsspannung und die _delay_us, wie im Link angegeben, wird 
funktionieren (wenn deine Taktfrequenz stimmt)
Wenn dein Servo dann korrekt reagiert, fängst du an den ADC einzubauen.

Aber bitte nicht wieder mit so einer goto Orgie wie in deinem anderen 
Link.

Beitrag "Servo dreht nur nach Links"
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.