Ingen fråga, bara glad

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
SeniorLemuren
Inlägg: 7803
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Ingen fråga, bara glad

Inlägg av SeniorLemuren »

Satt och krånglade till det lite. Tar in en spänning 0 till 5 Volt analogt till Arduino Uno Vill mata ut en inverterad signal med PWM. 0 volt skall ge full PWM och 5 Volt skall ge 0 Volt PWM. Efter att ha krånglat till det med division med 0 osv. Började jag bli irriterad och då tar det tvärstopp. Men så dök tanken upp att kolla map som jag inte viste att det gick att använda för att lösa problemet med en fisblink. så nu är ag glad igen.

Analog in 0 till 1023 konverteras till pwm från 512 till 0 lätt som en plätt.

Kod: Markera allt

pwmOut = map(sensorValue, 0,1023,512 ,0);
Kan inte förstå hur jag kan ha missat det i alla år. Eller så har jag blivit "gaggig" och glömt bort. :D

Edit: Felskrivet i map. Skall stå: map(sensorValue, 0,1023,255 ,0);
Senast redigerad av SeniorLemuren 9 oktober 2020, 08:57:26, redigerad totalt 1 gång.
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32725
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: Ingen fråga, bara glad

Inlägg av HUGGBÄVERN »

DEN DÄR instruktionen måste jag bara komma ihåg. Tack Seniorlemuren!

Fast division med noll är en bra lösning på många problem det med ...

Bild
Användarvisningsbild
Klas-Kenny
Inlägg: 11327
Blev medlem: 17 maj 2010, 19:06:14
Ort: Växjö/Alvesta

Re: Ingen fråga, bara glad

Inlägg av Klas-Kenny »

Visst blev det elegant med bara ett funktionsanrop.

Men om man nu inte haft en sån "lyx"-funktion att tillgå, hade samma resultat kunnat fås med

Kod: Markera allt

pwmOut = 512 - ((sensorValue+1) / 2);
Helt utan divisioner med noll. :)


Detta är sannolikt betydligt effektivare också, map-funktionen är nog betydligt krångligare i och med att den ska ta hänsyn till alla tänkbara varianter.
Användarvisningsbild
HUGGBÄVERN
Tidigare soundbrigade
Inlägg: 32725
Blev medlem: 23 augusti 2006, 22:44:11
Ort: Lilla Paris
Kontakt:

Re: Ingen fråga, bara glad

Inlägg av HUGGBÄVERN »

Jag hade en snarlik situation där jag ville styra en sekvenser. Med en pot i mittläget skulle räknaren stoppas och åt ena hållet skulle jag räkna upp med ökande frekvens och åt andra hållet nedåt med ökande frekvens.

Det blev något liknande Klas-Kennys lösning.
Användarvisningsbild
rvl
Inlägg: 5780
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: Ingen fråga, bara glad

Inlägg av rvl »

Varför inte skift istället för division med två, när du ändå var igång? "Helt utan division överhuvudtaget." :)
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Ingen fråga, bara glad

Inlägg av Icecap »

rvl: det klarar kompilern ganska automatisk om den är värd namnet.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4693
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Ingen fråga, bara glad

Inlägg av Swech »

Skall den verkligen gå från 512 till 0
inte 511 till 0 ?

Swech
SeniorLemuren
Inlägg: 7803
Blev medlem: 26 maj 2009, 12:20:37
Ort: Kristinehamn

Re: Ingen fråga, bara glad

Inlägg av SeniorLemuren »

Felskrivet i hastigheten. Den skall gå från 255 till 0. Maxvärdet på PWM till Arduinon är ju 255.
Skriv svar