Sida 1 av 4

Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 12:50:07
av Al_Bundy
Hej!

Jag gjorde ett litet expriment på digitalRead och analogRead.

Det första experimentet som jag gjorde var digitalRead. Då skulle man trycka på en knapp och sen då visar monitor en etta eller en nolla, vilket jag direkt förstår vad det är. On eller Off.

Experiment finns här: http://arduino.cc/en/Tutorial/DigitalReadSerial

Men däremot analogRead så förstog jag inte så mycket om. Där var det en potentiometer som jag skruvade på. När man skruvade på den så visades tal från 0 till 1023 på en monitor som är integrerat med Arduino IDE.

Varför blev det 0 till 1023 och inte 0 till 1024 ?

Experiment finns här: http://arduino.cc/en/Tutorial/AnalogReadSerial

Tack!

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 12:52:18
av ensten
Därför att det finns 1024 "positioner" varav en är "0".

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 13:19:50
av Al_Bundy
Vad menar du med "positioner" ?

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 13:26:18
av jesse
ok... (nytt försök)

Du har bara tio bitar som talet ska få plats i.
noll = 00 0000 0000
1023 = 11 1111 1111
1024 = 100 0000 0000 = elva bitar - får inte plats.

Men en liten följdfråga:
om Aref = 5.0 volt, ska man då räkna med att Aref motsvaras av 1024 eller 1023 ?

dvs. ska det vara:

Kod: Markera allt

float volt;
u16 analog;
...
analog = ADC; // läs in från ADC
volt = analog * 5.00 / 1024;
eller ska det vara

Kod: Markera allt

float volt;
u16 analog;
...
analog = ADC; // läs in från ADC
volt = analog * 5.00 / 1023;
(det är en kuggfråga - jag vet svaret)

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 13:36:44
av Al_Bundy
Jadu..bra fråga :)
Jag vet inte.

Jag förstår inte heller varför jag har bara 10 bitar och inte 11 bitar. 2^11 = 2048. Brukar finnas som megabyte på ram. Iallafall vad jag har på min dator.

Men om du tar ett praktiskt exempel med t.ex en blinkande LED och en eller flera knappar kanske? Typ om man trycker in två knappar så lyser lampan och trycker man in den tredje så blinkar lampan osv.

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 13:40:48
av Walle
Därför att din ADC är på 10 bitar och inte 11 bitar. Resten av det du skriver förstår jag absolut ingenting av, vad har lysande eller blinkande lysdioder med ADCn att göra?

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 13:54:04
av Lennart Aspenryd
Mata inte trollen!
Grundläggande kunskaper är binärt, och basic

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 14:12:57
av JimmyAndersson
Lasp:
Att slänga ur sig "Troll" skapar bara en jobbig stämning.
Skriv något konstruktivt istället.

Åter till ämnet!

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 14:17:24
av lizerdboy
Om man tänker på ett mindre exempel så kanske de blir lättare att förstå.

2 bitar som ger fyra olika kombinationer.

00 <- 0
01
10
11 <- 3

sammanlagt fyra varianter

i 10 bitar

0000000000 <- 0
-//-
1111111111 <-1023

sammanlagt 1024

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 14:20:05
av Al_Bundy
Walle skrev:Därför att din ADC är på 10 bitar och inte 11 bitar. Resten av det du skriver förstår jag absolut ingenting av, vad har lysande eller blinkande lysdioder med ADCn att göra?
Okej. Det förklarar rätt bra det där :)
Tack!

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 14:45:35
av Al_Bundy
När jag gjorde det där exprimentet så använde jag en potentiometer på 10k ohm. Jag antar att när jag hade "full resitans" på potentiometern så visade monitorn 1023 och när jag hade ingen resitans alls så visade monitorn 0.

Om jag använder ett motstånd på 5k ohm, borde det inte monitorn visa hälften av 1023 då?

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 15:06:53
av Limestone
Ta reda på vad troll är innan du själv blir ett... Det finns tillräckligt med riktiga troll på forumet som det är redan.

http://sv.wikipedia.org/wiki/Internettroll

Om trådskaparen ställer frågor på ett forum av en eller annan anledning skall väl han eller hon knappast bli förlöjligad även om personen ifråga inte har full förståelse på svaret, har man inget konstruktivt att skriva kan man ju alltid gå på toaletten för att få ur sig skiten...

Ett forum är väl en plats för ALLA även de som inte redan kan allt...

Trist att läsa att även de äldre medlemmarna bär sig åt som många yngre...


Och nu kommer det givetvis att komma en massa kommentarer angående det här inlägget oxå, bara för att det MÅSTE ifrågasättas.
Så varsågoda och "Let the flaming begin"

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 15:09:26
av sodjan
> ...borde det inte monitorn visa hälften av 1023 då?

Nej. (Här får man verkligen bita sig i tungan och räkna till 10...)

Jag tycker att det är bäst att du funderar mer på vad du skriver.
Det blir så lätt infekterat när det dyker upp så genomkorkade frågor.

> ...så använde jag en potentiometer på 10k ohm.

Som var kopplad enligt bilden på den länk som *DU SJÄLV* postade ???
Eller hur var den inkopplad?
Var den *INTE* kopplad med alla tre benen enligt bilden?

> Om jag använder ett motstånd på 5k ohm,

Ett motstånd med tre ben !!??
Om inte så får du faktiskt förklara bättre vad du gjorde...

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 15:10:40
av Limestone
Al_bundy:

Vilken resistans på potentiometern är egentligen oväsentligt rörande bitarna, det som ändras är skalan, dvs. hur "fort" den analoga signalen ändras...

Edit: Och vips så dök nästa upp... :tumner: apropå konstruktiva inlägg...

Re: Arduino: Varför 0 till 1023 vid analog ?

Postat: 26 maj 2013, 15:17:02
av ensten
Problemet är att när du gör en analog > digital konvertering måste du någonstans (gissningsvis i kod eftersom du labbar med uC) definiera vad som skall konverteras. Du kan koppla vilken pot som helst i ditt exempel men du måste ändå någonstans tala om vad som skall vara 0ohm och vad som skall vara xx-ohm.

Du kan till och med vända på steken och bestämma att värdet ändras baklänges mot vad det gör nu.

Någonstans i koden finns definierat vad x ohm är (t.ex. 0 eller 10kohm 1023).

EDIT> Eller i en inbyggd funktion i Arduino, ser det ut som när jag tittade på exemplet.