Problem z poprawnym odczytem ADC

środowisko online
Awatar użytkownika
foreste
Najsłabsze Ogniwo
Posty: 14
Rejestracja: sob sty 14, 2017 5:37 pm
Kontaktowanie:

Problem z poprawnym odczytem ADC

Post autor: foreste » śr lut 01, 2017 11:58 am

Witam
mam problem z poprawnym odczytem danych przetfornika analogowo cyfrowego problem polega na złym wyświetlaniu wyniku
rs232.jpg
kod programu

Kod: Zaznacz cały

#include "mbed.h"
#include "TextLCD.h"
#include "Terminal.h"
#include "pin_names.h"

// Host PC Communication channels
//Serial pc(USBTX, USBRX); // tx, rx
 
Terminal pc(BTTX, BTRX); // tx, rx
// I2C Communication
//I2C i2c_lcd(PTC9, PTC8);  // SDA, SCL
I2C i2c_lcd(PB_14, PB_13);  // SDA, SCL
#define LightOn TextLCD::LightOn
TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD16x2, TextLCD::ST7066_ACM); // I2C bus, PCF8574 Slaveaddress, LCD Type, Device Type
AnalogIn voltage(PC_3);
void init()
{
	pc.foreground(0xFFFFFF);
	pc.locate(0, 0);
	pc.printf("Voltmeter v1");
	lcd.setBacklight(LightOn);
	lcd.setCursor(TextLCD::CurOff_BlkOff);
	wait(0.2);
	lcd.locate(2, 0);
	lcd.printf("Voltmeter v1");
}
void load()
{
	lcd.locate(4, 0);
	lcd.printf("Starting \n");
	pc.locate(5, 0);
	pc.printf("Starting \r\n");
	
	for (int loanding = 0; loanding <= 100; loanding++)
	{
		wait(0.3);
		lcd.locate(6, 1);
		lcd.printf("%d \n", loanding);
		lcd.setUDC(0, (char *) udc_procent);
		lcd.locate(9, 1);
		lcd.putc(0);
		pc.locate(6, 1);
		pc.printf("%d", loanding);
	}
}
void warring()
{
	lcd.locate(3, 0);
	lcd.printf("WARRING! \n");
	pc.locate(5, 0);
	pc.foreground(0xFF0000);
	pc.printf("WARRING! \r\n");
	wait(1);
	lcd.cls();
	lcd.locate(0, 0);
	lcd.printf("Use a resistor");
	lcd.locate(0, 1);
	lcd.printf("divider");
	pc.printf("Use a resistor divider");
}
void clear()
{
	lcd.cls();
	pc.cls();
}
int main() {
	clear();
	init();
	wait(5);
	clear();
	warring();
	wait(2);
	clear();
	load();
	wait(2);
	clear();
	
	float voltager;		

	while (1)
	{
	 voltager = voltage.read();
		pc.locate(4, 0);
		float voltageV = (voltager*(5.0 / 4096.0)); 
		pc.printf("value voltage %d", voltageV);
		lcd.printf("value voltage %d \n", voltageV);
		
	}
}
możliwe ze zle konwertuje dane odebrane z ADC w pętli while.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

Awatar użytkownika
xbary
Moderator
Posty: 9
Rejestracja: wt sty 10, 2017 8:40 pm

Re: Problem z poprawnym odczytem ADC

Post autor: xbary » czw lut 02, 2017 9:02 am

Zobacz jaki masz typ zmiennej voltageV a w printf jaki typ podejmujesz wyświetlać.
:) Nie wnikałem w reszte kodu, ale to pierwsze mi się rzuciło w oko.

Odpowiedz

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość