Sida 2 av 4

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 30 oktober 2018, 21:58:39
av Shimonu
Icecap gav ju en lösning ovanför

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 30 oktober 2018, 22:21:28
av EonX
Det är helt rätt, jag som får träna upp min läskunnighet :vissla:

Nästa fråga, nu har jag en potentiometern som ger värdet på enklaste vis mellan 0 - 5 volt.

Om jag vill byta den mot en temperaturgivare som då har en startpunkt på ett negativt värde. Vad behöver man göra för att få det att fungera?

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 07:48:16
av SeniorLemuren
Inte så konstigt att du får ett heltal när du deklarerat a som int "int a = (voltage);"Varför använder du a i stället för voltage överhuvudtaget?

Testat detta som sodjan länkade till?

Kod: Markera allt

static float f_val = 123.6794;
static char outstr[15];

void setup() {
  dtostrf(f_val,7, 3, outstr);

  Serial.begin(9600);
  Serial.println(outstr);
}

void loop(){
}

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 08:09:17
av EonX
Jag provade den men fick det inte att fungera, dock beror det nog mer på min okunskap än koden.

Jag använde mig av den andra länken han skickade.

Jag ska göra ett nytt försök idag, men hur ska jag på enklaste vis bli av med ”a” då?

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 09:32:46
av Icecap
Enklast hade varit att ta en temperatursensor som är digital (t.ex. DS18B20).

Men OK, om din analoga givare kör med negativa spänningar måste du offsetta spänningen medelst t.ex. en op-amp. Det går på andra sätt också men då det är oklart exakt vilken sensor det rör sig om är bättre svar omöjliga.

Har du kollat i databladet om det finns en lösning för detta?

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 09:34:55
av SeniorLemuren
I ditt fall flyttar du förstås inhämtningen och utskriften till loopen. Detta är bara ett exempel på att det funka (testat på Uno)

Kod: Markera allt

float voltage = 123.6794;
static char outstr[15];

void setup() {
  dtostrf(voltage,7, 3, outstr);

  Serial.begin(9600);
  Serial.println(outstr);
}

void loop(){
}

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 09:49:56
av EonX
Icecap skrev:Enklast hade varit att ta en temperatursensor som är digital (t.ex. DS18B20).

Men OK, om din analoga givare kör med negativa spänningar måste du offsetta spänningen medelst t.ex. en op-amp. Det går på andra sätt också men då det är oklart exakt vilken sensor det rör sig om är bättre svar omöjliga.

Har du kollat i databladet om det finns en lösning för detta?
Jag har inte köpt någon givare än så om en digital är bättre så köper jag en sådan direkt av den typ du nämner.

Min fundering var egentligen hur det presenteras, Med en analog tempgivarw börjar ju skalan på tex -25C, hur får man koden att tolka en viss spänning till ett negativt tal och presentera detta?

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 10:46:53
av svanted
vad menar du med att den börjar på -25°
en analog tempgivare kan ju inte ge ut negativ spänning och du matar den med +5V
är det att specen för givaren börjar på -25°.
det handlar ju bara om att skriva vilken resistans den ger ut med början vid -25°
i praktiken beror allt på hur du kopplat och vilka komponenter du använder.

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 10:56:57
av EonX
Jag är helt med på vad du menar, men när jag i min kod som den är nu matar in 0V visar oled 0, när jag matar in 5V visar oled 5. Och detta reder jag ut att ändra i koden så tex vid 5V visar oled 100.

Men om jag ist skulle vilja att vid 0V visar oled -25 och 5V visar 100.

Hur skulle du koden se ut?

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 11:08:51
av Klas-Kenny
Du säger att du reder ut att skala om 0-5V till 0-100, bra.

Att sen göra om 0-100 till tex. -25 - +75, är bara frågan om att subtrahera med 25.
Se bara till att variabeln du använder inte är av unsigned typ (en vanlig int fungerar bra), så kan processorn hantera negativa tal utmärkt.

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 11:16:05
av Shimonu
Jag tror däremot han vill använda området -25 till 100

I det fallet får råvärdet multipliceras med 125/1023 eller vad upplösningen nu var och sen subtrahera med 25.

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 11:21:03
av Klas-Kenny
Ja.

Jag förutsatte att om han kan omvandla till 0-100, så fixar han även att omvandla till 0-125.. :roll:

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 12:30:08
av Wedge
Det finns även en färdig funktion för omvandlingen:
https://www.arduino.cc/reference/en/lan ... /math/map/

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 12:45:05
av SeniorLemuren
Det verkar ju som om han vill ha talet med decimaler. Map funkar väl bara för heltal.

Re: Hjälp med kod Arduino - visa volt på oled

Postat: 31 oktober 2018, 13:01:03
av Wedge
Hmm, det har du nog rätt i SeniorLemuren.
Men å andra sidan, källkoden till map() är publicerad och det är enkelt att byta argument- och returtyp till float och skapa en egen funktion:

Kod: Markera allt

long map(long x, long in_min, long in_max, long out_min, long out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}