Volt Ampmeter
7 berichten
• Pagina 1 van 1
- PieTronics
- Berichten: 2
- Geregistreerd: 31 Mei 2012, 23:22
Volt Ampmeter
Hallo Allemaal,
Ik heb een Arduino Mega 2560 en de Seeed Studio 2.8" TFT Touch Shield
van dit setje wil ik een uitgebreide volt/amp meter maken.
Dit had ik al gemaakt met de ArduinoUno met een 2x16 display, dat was geen probleem.
Met het nieuwe setje ben ik net begonnen, ik zal de code erbij zetten.
Het scherm laat alles zien, alleen de waarde die hij binnenkrijgt laat hij op het scherm zien als een ? teken.
In de seriele-monitor laat hij het wel zien.
Ik denk dat de aansturing naar het display niet goed gaat.
Weet iemand een oplossing.
Bedankt alvast.
Hier de Code:
#include <stdint.h>
#include <TouchScreen.h>
#include <TFT.h>
#ifdef MEGA
#define YP A2 // must be an analog pin, use "An" notation!
#define XM A1 // must be an analog pin, use "An" notation!
#define YM 14 // can be a digital pin, this is A0
#define XP 17 // can be a digital pin, this is A3
#endif
#ifdef MEGA
#define YP A2 // must be an analog pin, use "An" notation!
#define XM A1 // must be an analog pin, use "An" notation!
#define YM 54 // can be a digital pin, this is A0
#define XP 57 // can be a digital pin, this is A3
#endif
void setup()
{
Serial.begin(115200);
Tft.init(); //init TFT library
/* Demo of
drawRectangle(unsigned int poX, unsigned int poY, unsigned int length,unsigned int width,unsigned int color);
fillRectangle(unsigned int poX, unsigned int poY, unsigned int length, unsigned int width, unsigned int color);
*/
Tft.setDisplayDirect(DOWN2UP);
Tft.fillRectangle(5, 315, 40,313,BLUE);
Tft.drawString("1",17,310,2,WHITE);
Tft.drawString("V",17,165,2,WHITE);
Tft.drawString("A",17,20,2,WHITE);
Tft.drawRectangle(53, 3, 40,313,BLUE);
Tft.drawString("2",67,310,2,WHITE);
Tft.drawRectangle(103, 3, 40,313,BLUE);
Tft.drawString("3",117,310,2,WHITE);
Tft.drawRectangle(153, 3, 40,313,BLUE);
Tft.drawString("4",167,310,2,WHITE);
//Tft.drawRectangle(30, 160, 60, 60,RED);
}
void loop()
{
int sensorValue = analogRead(A8);
float voltage_string = sensorValue * (5.0 / 1023.0);
char inChar=voltage_string;
Tft.drawChar(inChar,17,250,2,WHITE);
Serial.println(voltage_string);
}
Ik heb een Arduino Mega 2560 en de Seeed Studio 2.8" TFT Touch Shield
van dit setje wil ik een uitgebreide volt/amp meter maken.
Dit had ik al gemaakt met de ArduinoUno met een 2x16 display, dat was geen probleem.
Met het nieuwe setje ben ik net begonnen, ik zal de code erbij zetten.
Het scherm laat alles zien, alleen de waarde die hij binnenkrijgt laat hij op het scherm zien als een ? teken.
In de seriele-monitor laat hij het wel zien.
Ik denk dat de aansturing naar het display niet goed gaat.
Weet iemand een oplossing.
Bedankt alvast.
Hier de Code:
#include <stdint.h>
#include <TouchScreen.h>
#include <TFT.h>
#ifdef MEGA
#define YP A2 // must be an analog pin, use "An" notation!
#define XM A1 // must be an analog pin, use "An" notation!
#define YM 14 // can be a digital pin, this is A0
#define XP 17 // can be a digital pin, this is A3
#endif
#ifdef MEGA
#define YP A2 // must be an analog pin, use "An" notation!
#define XM A1 // must be an analog pin, use "An" notation!
#define YM 54 // can be a digital pin, this is A0
#define XP 57 // can be a digital pin, this is A3
#endif
void setup()
{
Serial.begin(115200);
Tft.init(); //init TFT library
/* Demo of
drawRectangle(unsigned int poX, unsigned int poY, unsigned int length,unsigned int width,unsigned int color);
fillRectangle(unsigned int poX, unsigned int poY, unsigned int length, unsigned int width, unsigned int color);
*/
Tft.setDisplayDirect(DOWN2UP);
Tft.fillRectangle(5, 315, 40,313,BLUE);
Tft.drawString("1",17,310,2,WHITE);
Tft.drawString("V",17,165,2,WHITE);
Tft.drawString("A",17,20,2,WHITE);
Tft.drawRectangle(53, 3, 40,313,BLUE);
Tft.drawString("2",67,310,2,WHITE);
Tft.drawRectangle(103, 3, 40,313,BLUE);
Tft.drawString("3",117,310,2,WHITE);
Tft.drawRectangle(153, 3, 40,313,BLUE);
Tft.drawString("4",167,310,2,WHITE);
//Tft.drawRectangle(30, 160, 60, 60,RED);
}
void loop()
{
int sensorValue = analogRead(A8);
float voltage_string = sensorValue * (5.0 / 1023.0);
char inChar=voltage_string;
Tft.drawChar(inChar,17,250,2,WHITE);
Serial.println(voltage_string);
}
Advertisement
Re: Volt Ampmeter
Hallo,
ben een leek op het gebied van arduino maar you project spreekt mij wel aan.
zou graag in contact willen komen
greetz
ben een leek op het gebied van arduino maar you project spreekt mij wel aan.
zou graag in contact willen komen
greetz
- PieTronics
- Berichten: 2
- Geregistreerd: 31 Mei 2012, 23:22
Re: Volt Ampmeter
Hallo,
In contact komen kan altijd, je kan een mail sturen naar:
grt
Piet
In contact komen kan altijd, je kan een mail sturen naar:
grt
Piet
Laatst gewijzigd door PieTronics op 08 Okt 2012, 22:19, in totaal 1 keer gewijzigd.
Re: Volt Ampmeter
volgens mij zit er een foutje in de code als ik heb upload naar mijn arduino komt er alleen een vraag teken op de plaat waar de analoge waarde moet staan.
Ik heb hem iets aangepast maar nu word de waarde niet ververst waardoor het display volloopt heeft iemand hiervoor een idee
#include <stdint.h>
#include <TouchScreen.h>
#include <TFT.h>
#ifdef SEEEDUINO
#define YP A2 // must be an analog pin, use "An" notation!
#define XM A1 // must be an analog pin, use "An" notation!
#define YM 14 // can be a digital pin, this is A0
#define XP 17 // can be a digital pin, this is A3
#endif
char string[10];
void setup()
{
Serial.begin(115200);
Tft.init(); //init TFT library
/* Demo of
drawRectangle(unsigned int poX, unsigned int poY, unsigned int length,unsigned int width,unsigned int color);
fillRectangle(unsigned int poX, unsigned int poY, unsigned int length, unsigned int width, unsigned int color);
*/
Tft.setDisplayDirect(DOWN2UP);
Tft.fillRectangle(5, 315, 40,313,BLUE);
Tft.drawString("1",17,310,2,WHITE);
Tft.drawString("V",17,165,2,WHITE);
Tft.drawString("A",17,20,2,WHITE);
Tft.drawRectangle(53, 3, 40,313,BLUE);
Tft.drawString("2",67,310,2,WHITE);
Tft.drawRectangle(103, 3, 40,313,BLUE);
Tft.drawString("3",117,310,2,WHITE);
Tft.drawRectangle(153, 3, 40,313,BLUE);
Tft.drawString("4",167,310,2,WHITE);
//Tft.drawRectangle(30, 160, 60, 60,RED);
}
void loop()
{
int sensorValue = analogRead(A4);
float voltage_string = sensorValue * (5.0 / 1023.0);
Tft.drawString(itoa(sensorValue,string,10),15,220,2,WHITE);
Serial.println(voltage_string);
}
Ik heb hem iets aangepast maar nu word de waarde niet ververst waardoor het display volloopt heeft iemand hiervoor een idee
#include <stdint.h>
#include <TouchScreen.h>
#include <TFT.h>
#ifdef SEEEDUINO
#define YP A2 // must be an analog pin, use "An" notation!
#define XM A1 // must be an analog pin, use "An" notation!
#define YM 14 // can be a digital pin, this is A0
#define XP 17 // can be a digital pin, this is A3
#endif
char string[10];
void setup()
{
Serial.begin(115200);
Tft.init(); //init TFT library
/* Demo of
drawRectangle(unsigned int poX, unsigned int poY, unsigned int length,unsigned int width,unsigned int color);
fillRectangle(unsigned int poX, unsigned int poY, unsigned int length, unsigned int width, unsigned int color);
*/
Tft.setDisplayDirect(DOWN2UP);
Tft.fillRectangle(5, 315, 40,313,BLUE);
Tft.drawString("1",17,310,2,WHITE);
Tft.drawString("V",17,165,2,WHITE);
Tft.drawString("A",17,20,2,WHITE);
Tft.drawRectangle(53, 3, 40,313,BLUE);
Tft.drawString("2",67,310,2,WHITE);
Tft.drawRectangle(103, 3, 40,313,BLUE);
Tft.drawString("3",117,310,2,WHITE);
Tft.drawRectangle(153, 3, 40,313,BLUE);
Tft.drawString("4",167,310,2,WHITE);
//Tft.drawRectangle(30, 160, 60, 60,RED);
}
void loop()
{
int sensorValue = analogRead(A4);
float voltage_string = sensorValue * (5.0 / 1023.0);
Tft.drawString(itoa(sensorValue,string,10),15,220,2,WHITE);
Serial.println(voltage_string);
}
Re: Volt Ampmeter
Hoi,
Volgens mij zit je probleem bij itoa. Deze functie zet een INTEGER om naar een STRING en je probeert een FLOAT om te zetten.
Zelf doe ik dat met volgende functie:
dtostrf(USpanning[1],5, 2, dtostrfbuffer); // spanning accu bestaande uit 5 digits waarvan 2 achter de komma
grtn
Volgens mij zit je probleem bij itoa. Deze functie zet een INTEGER om naar een STRING en je probeert een FLOAT om te zetten.
Zelf doe ik dat met volgende functie:
dtostrf(USpanning[1],5, 2, dtostrfbuffer); // spanning accu bestaande uit 5 digits waarvan 2 achter de komma
grtn
Re: Volt Ampmeter
als je code plaats, kun je er code tags omheen zetten :)
maakt het iets makkelijker te lezen, ook als je je code goed indent (niet noodzakelijk voor werking) maar maakt het ook weer wat leesbaarder :)
de } staat onder de "code block" functie header, maakt het duidelijker waar code bij hoort zoals, int x; hoort binnen void loop() functie body (alles binnen {} is de body genaamt), omdat het tenopzichte van de } die bij void loop(){} hoort en ten opzichte van void loop zelf ingedent is :)
maar goed, ik dwing niemand om zo code te schrijven, het is maar net hoe je het wil doen :)
er zijn uiteraad nog veeele andere manier om syntax op te stellen, maar ja ik denk dat dit te veel offtopic gaat :)
meschien maar een topic voor aanmaken :)
- Code: Alles selecteren
[code][/code]
maakt het iets makkelijker te lezen, ook als je je code goed indent (niet noodzakelijk voor werking) maar maakt het ook weer wat leesbaarder :)
- Code: Alles selecteren
#include <stdio.h>
int main(){
void setup(){
}
void loop(){
int x = 1;
if(x<2){
doStuf();
}
else{
doMoreStuf();
}
}
}
de } staat onder de "code block" functie header, maakt het duidelijker waar code bij hoort zoals, int x; hoort binnen void loop() functie body (alles binnen {} is de body genaamt), omdat het tenopzichte van de } die bij void loop(){} hoort en ten opzichte van void loop zelf ingedent is :)
maar goed, ik dwing niemand om zo code te schrijven, het is maar net hoe je het wil doen :)
er zijn uiteraad nog veeele andere manier om syntax op te stellen, maar ja ik denk dat dit te veel offtopic gaat :)
meschien maar een topic voor aanmaken :)
7 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 9 gasten