Prima treba care am facut-o a fost sa inlocuiesc programul Arduino IDE cu versiunea care recunoaste pe Arduino Due si aceasta este Arduino Ide 1.5.7 Beta.
Dupa scurte teste de incarcare si clipire de LED-uri, am trecut la inlocuirea placii Arduino Mega de la statia meteo cu senzorul DS18B20 si DHT11, pe care am prezentat-o in articolul anterior. Am eliminat si interfata logica realizata cu integratul CD4050, deoarece, atat placa Arduino Due, cat si afisajul cu driver ILI9341 lucreaza la 3,3V.
Am testat intai exemple cu libraria grafica ucglib, facand si un filmulet numit test afisaj 2,2" cu ILI9341 si libraria ucglib cu Arduino Due
Am adaugat si senzorul de presiune BMP180 pentru a avea o ministatie meteo cat mai completa, obtinand pe ecran ceva de genul:
Sketch-ul ultimei variante este:
/*
original sketch by niq_ro from http://nicuflorica.blogspot.com using ucglib library
version for 2.2" TFT with ILI9341 - 2014.07.29, Craiova - Romania
use Universal uC Color Graphics Library from https://code.google.com/p/ucglib/
*/
#include <SPI.h>
#include "Ucglib.h"
//Ucglib_ILI9341_18x240x320_HWSPI ucg(/*cd=*/ 6 , /*cs=*/ 5, /*reset=*/ 4); // at Uno
//Ucglib_ILI9341_18x240x320_HWSPI ucg(/*cd=*/ 26 , /*cs=*/ 24, /*reset=*/ 22); // at Mega
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 52, /*data=*/ 51, /*cd=*/ 26 , /*cs=*/ 24, /*reset=*/ 22); //at Mega
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 76, /*data=*/ 75, /*cd=*/ 26 , /*cs=*/ 24, /*reset=*/ 22); //at Mega
Ucglib_ILI9341_18x240x320_HWSPI ucg(/*cd=*/ 26 , /*cs=*/ 24, /*reset=*/ 22); //at Mega or Due
/*
Due |Mega | Uno | TFT - ILI9341
----------------------
D22 | D22 | D4 | RESET
D24 | D24 | D5 | CS
D26 | D26 | D6 | D/C
? | ? | LED (via 220 ohms resistor at 5V)
MOSI | D51 | D11 | MOSI
MISO | D50 | D12 | MISO
SCK | D52 | D13 | SCK
-----------------------------
with CD4050 adapter or 10k resistor, power supply and logical levels is 3.3V
schematic: http://nicuflorica.blogspot.ro/2014/07/afisaj-grafic-color-qvga-de-22-cu.html
*/
#include <dht.h>
// from http://playground.arduino.cc/Main/DHTLib
dht DHT;
// https://github.com/adafruit/Adafruit-BMP085-Library
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
float t1, t2;
float t10, t20;
float t11, t21;
float t12, t22;
float t13, t23;
int h11, h12;
int p1, p2;
void setup() {
delay(1000);
bmp.begin();
ucg.begin(UCG_FONT_MODE_TRANSPARENT);
ucg.clearScreen();
ucg.setFont(ucg_font_ncenR14r);
ucg.setColor(255, 0, 255);
ucg.setColor(1, 255, 0,0);
ucg.setRotate90();
ucg.setColor(255, 255, 255); // culoare alba
ucg.drawFrame(0,0,320,240); //
ucg.setFont(ucg_font_courB24); // 20 pixel height
ucg.setColor(255, 0, 0); // culoare rosie
ucg.setPrintPos(60,30);
ucg.print("Ministatie");
ucg.setColor(0, 255, 0); // culoare verde
ucg.setColor(0, 255, 0);
ucg.setColor(0, 0, 255); // culoare albastru
ucg.setPrintPos(17, 60);
ucg.print("meteo cu DHT11");
ucg.setPrintPos(55, 90);
ucg.setColor(5, 255, 0); // culoare verde
ucg.print("si BMP180");
ucg.setFont(ucg_font_fur17r); // 17 pixel height
ucg.setColor(255, 255, 0); // culoare galbena
ucg.setPrintPos(25,120);
ucg.print("ecran grafic 2,2'' (5,6cm)");
ucg.setFont(ucg_font_courB24); // 20 pixel height
ucg.setColor(0, 255, 255); // culoare bleo
ucg.setPrintPos(10,150);
ucg.print("QVGA cu ILI9341");
ucg.setColor(255, 0, 255); // culoare mov
ucg.setPrintPos(20,180);
ucg.print("versiune 4.4.0");
ucg.setFont(ucg_font_fur17r); // 17 pixel height
ucg.setColor(255, 255, 255); // culoare alb
ucg.setPrintPos(60,210);
ucg.print("realizat de niq_ro");
delay(5000);
ucg.clearScreen();
t13=40.0;
h12=40.0;
p2 = 900;
}
void loop() {
// BMP180 part
int p1 = bmp.readPressure()/101.325;
p1 = p1 * 0.760;
// DHT11 part
int chk = DHT.read11(37);
delay(1000);
// timeout;
int h11 = DHT.humidity;
if (DHT.humidity < 0) h11 = 0;
// BMP180 part 2
t12 = bmp.readTemperature();
int t15 = t12;
float t16 = 10*t15;
t16 = t16/10;
t16 = t12;
if (t16 != t13)
{
temperaturi(t16, t13, 20, 0); // temperature, old temperature, x,y
termometre(t16, 20);
}
if (h11 != h12)
{
// umiditate(h11, h12, 115, 90); // humidity, old humidity, x, y
umiditate(h11, h12, 40, 180); // humidity, old humidity, x, y
barca (h11, h12);
}
if (p1 != p2)
{
presiune(p1, p2, 100, 60); // pressure, old pressure, x, y
// barca (h11, h12);
}
//}
delay (2000);
t13=t16;
h12=h11;
p2=p1;
} // final de program, se revine de la inceput
void temperaturi(float t3, float t4, int ics, int igrec)
{
int t5 = t3;
int t6 = t4;
ucg.setFont(ucg_font_courB24);
if (t3*t4 < 0)
{ucg.setColor(0, 0, 0);
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(ics+7, qy + igrec , 105);
}
}
int t51 = t5/10;
int t61 = t6/10;
ucg.setColor(0, 0, 0);
if (t51 != t61)
{
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(ics+28, qy + igrec , 21);
}
}
t5 = t3 - t51*10;
t6 = t4 - t61*10;
if (t5 != t6)
{
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(ics+49, qy + igrec , 21);
}
}
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(ics+91, qy + igrec , 21);
}
ucg.setColor(255, 0, 0);
ucg.setPrintPos(10 + ics, 30 + igrec);
//ucg.print("t :");
ucg.print("temperatura:");
ucg.setPrintPos(10 + ics, 60 + igrec);
if (t3 > 10.0) ucg.print("+");
else
if (t3>0.0) ucg.print(" +");
else
if (t3<0.0)
{
t3=-t3;
if (t3 > 10.0) ucg.print("-");
else
if (t3 > 0.0) ucg.print(" -");
}
if (t3==0.0) ucg.print(" ");
ucg.print(t3,1);
ucg.print(" C");
ucg.setFont(ucg_font_fur17r);
ucg.setPrintPos(30 + ics, 35 + igrec);
//if (igrec == 0) ucg.print("int");
//else ucg.print("ext");
ucg.setPrintPos(115 + ics, 50 + igrec);
ucg.print("o");
ucg.setPrintPos(75 + ics, 60 + igrec);
ucg.print(",");
}
void termometre (float t, int ics1)
{
ucg.setColor(255, 255, 255);
ucg.drawFrame(ics1-4,10,9,200);
ucg.drawCircle(ics1,220,10,UCG_DRAW_ALL);
for (int a = 0; a < 10; a++)
{
ucg.drawLine(ics1-5,20+20*a,ics1-7,20+20*a);
ucg.drawLine(ics1+5,20+20*a,ics1+7,20+20*a);
}
ucg.drawLine(ics1-10,140,ics1+10,140);
ucg.setFont(ucg_font_courB24);
ucg.setPrintPos(13 + ics1, 149);
ucg.print("0 C");
ucg.setFont(ucg_font_fur17r);
ucg.setPrintPos(37 + ics1, 135);
ucg.print("o");
int lin = 140 - 2*t;
ucg.setColor(0, 0, 0); // black
ucg.drawBox(ics1-2,21, 5, lin+5);
ucg.setColor(255, 0, 0);
ucg.drawDisc(ics1,220,8,UCG_DRAW_ALL);
ucg.drawBox(ics1-2,lin, 5, 210-lin);
}
void umiditate(int h3, int h4, int zet, int igrec1)
{
ucg.setFont(ucg_font_courB24); // 20 pixel height
// sterg semnul ??
int h51 = h3/10;
int h61 = h4/10;
ucg.setColor(0, 0, 0);
// sterg zeci daca e cazul
if (h51 != h61)
{
//ucg.setColor(255, 255, 0);
ucg.setColor(0, 0, 0);
for (int qy = 39 ; qy < 60; qy++)
{
// ucg.drawHLine(zet+28, qy + igrec1 , 21);
ucg.drawHLine(zet+40, qy + igrec1, 42);
}
}
int h5 = h3 - h51*10;
int h6 = h4 - h61*10;
// sterg unitati daca e cazul
//if ((t5 != t6) || (t5-t6>0.2))
if (h5 != h6)
{
//ucg.setColor(0, 255, 0);
ucg.setColor(0, 0, 0);
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(zet+79, qy + igrec1 , 21);
}
}
ucg.setColor(0, 255, 255);
ucg.setPrintPos(zet, 30 + igrec1);
ucg.print("umiditate:");
//ucg.setFont(ucg_font_fub42n); // 20 pixel height
ucg.setPrintPos(40 + zet, 60 + igrec1);
//if (h3 > 10) ucg.print("+");
if (h3 > 10) ucg.print(" ");
else
{
//ucg.setColor(255, 255, 255);
ucg.setColor(0, 0, 0);
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(zet+40, qy + igrec1 , 42);
}
if (igrec1 <30) ucg.setColor(255, 255, 0);
else ucg.setColor(0, 255, 255);
ucg.setPrintPos(61 + zet, 60 + igrec1);
//ucg.print("+");
ucg.print(" ");
}
ucg.print(h3);
ucg.print("%");
}
void barca (int h, int h2) // new humidity, old humidity.,
{
int xx = 280;
int yy = 230;
//sterg barca
//ucg.setColor(100,100,100);
ucg.setColor(0,0,0);
ucg.drawBox(xx-25, yy-20-h2, 50, 30);
//sterg apa
//ucg.setColor(125, 125, 125);
ucg.setColor(0, 0, 0);
ucg.drawBox(xx-35, yy+10-h2, 70, h2-h);
//desenez apa
ucg.setColor(0, 255, 255);
ucg.drawBox(xx-35, yy+10-h, 70, h);
//desenz barcuta;
//desenez carena
ucg.setColor(255, 255, 0);
ucg.drawBox(xx-20, yy-h, 40, 10);
ucg.drawTriangle(xx-25, yy-h, xx-20, yy-h, xx-20, yy+10-h);
ucg.drawTriangle(xx+25, yy-h, xx+20, yy-h, xx+20, yy+10-h);
//desenez catarg
ucg.drawBox(xx-1, yy-20-h, 2, 20);
//desenez velele
ucg.setColor(0, 0, 255); // vela albastra
ucg.drawTriangle(xx+2, yy-20-h, xx+2, yy-h, xx+20, yy-h);
ucg.setColor(255, 0, 0); // vela rosie
ucg.drawTriangle(xx-2, yy-15-h, xx-2, yy-h, xx-20, yy-h);
}
void presiune (int p3, int p4, int zeti, int igreci)
{
ucg.setFont(ucg_font_courB24); // 20 pixel height
// sterg semnul ??
int p51 = p3/10;
int p61 = p4/10;
//ucg.setColor(0, 0, 0);
ucg.setColor(100, 0, 0);
// sterg zeci daca e cazul
if (p51 != p61)
{
//ucg.setColor(255, 255, 255);
ucg.setColor(0, 0, 0);
for (int qy3 = 39 ; qy3 < 60; qy3++)
{
// ucg.drawHLine(zet+28, qy + igrec1 , 21);
// ucg.drawHLine(zeti+40, qy3 + igreci, 42);
ucg.drawHLine(zeti+61, qy3 + igreci, 42);
}
}
int p5 = p3 - p51*10;
int p6 = p4 - p61*10;
// sterg unitati daca e cazul
//if ((t5 != t6) || (t5-t6>0.2))
if (p5 != p6)
{
//ucg.setColor(0, 255, 0);
ucg.setColor(0, 0, 0);
for (int qy4 = 39 ; qy4 < 60; qy4++)
{
// ucg.drawHLine(zeti+79, qy4 + igreci , 21);
ucg.drawHLine(zeti+100, qy4 + igreci , 21);
}
}
ucg.setColor(255, 255, 0);
ucg.setPrintPos(zeti, 30 + igreci);
ucg.print("presiune:");
//ucg.setFont(ucg_font_fub42n); // 20 pixel height
ucg.setPrintPos(40 + zeti, 60 + igreci);
//if (h3 > 10) ucg.print("+");
if (p3 > 10) ucg.print(" ");
else
{
//ucg.setColor(255, 255, 255);
ucg.setColor(0, 0, 0);
for (int qy5 = 39 ; qy5 < 60; qy5++)
{
// ucg.drawHLine(zeti+40, qy5 + igreci , 42);
ucg.drawHLine(zeti+61, qy5 + igreci , 42);
}
ucg.setColor(255, 255, 0);
ucg.setPrintPos(61 + zeti, 60 + igreci);
//ucg.print("+");
ucg.print(" ");
}
ucg.print(p3);
ucg.print("mm Hg");
}
Filmuletul, care prezinta modul de functionare, este ministatie meteo cu DHT11 si BMP180 pe ecran TFT de 2.2" cu ILI9341 pe un Arduino Due
Am desenat si partea de conectare a afisajului cu driver ILI9341, folosindu-ma de imaginea dinainte:
iar conectarea senzorilor la placa Arduino Due se face astfel:
Pentru prietenul meu, Adrian Roman, am modificat sketch-ul pentru a folosi doar informatiile de la senzorul DHT11 (am eliminat partea de BMP180):
Sketck-ul simplificat este:
/*
original sketch by niq_ro from http://nicuflorica.blogspot.com using ucglib library
version for 2.2" TFT with ILI9341 - 2014.07.29, Craiova - Romania
use Universal uC Color Graphics Library from https://code.google.com/p/ucglib/
*/
#include <SPI.h>
#include "Ucglib.h"
//Ucglib_ILI9341_18x240x320_HWSPI ucg(/*cd=*/ 6 , /*cs=*/ 5, /*reset=*/ 4); // at Uno
//Ucglib_ILI9341_18x240x320_HWSPI ucg(/*cd=*/ 26 , /*cs=*/ 24, /*reset=*/ 22); // at Mega
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 52, /*data=*/ 51, /*cd=*/ 26 , /*cs=*/ 24, /*reset=*/ 22); //at Mega
//Ucglib_ILI9341_18x240x320_SWSPI ucg(/*sclk=*/ 76, /*data=*/ 75, /*cd=*/ 26 , /*cs=*/ 24, /*reset=*/ 22); //at Mega
Ucglib_ILI9341_18x240x320_HWSPI ucg(/*cd=*/ 26 , /*cs=*/ 24, /*reset=*/ 22); //at Mega and Due
/*
Due |Mega | Uno | TFT - ILI9341
----------------------
D22 | D22 | D4 | RESET
D24 | D24 | D5 | CS
D26 | D26 | D6 | D/C
? | ? | LED (via 220 ohms resistor at 5V)
MOSI | D51 | D11 | MOSI
MISO | D50 | D12 | MISO
SCK | D52 | D13 | SCK
-----------------------------
with CD4050 adapter or 10k resistor, power supply and logical levels is 3.3V
schematic: http://nicuflorica.blogspot.ro/2014/07/afisaj-grafic-color-qvga-de-22-cu.html
*/
#include <dht.h>
// from http://playground.arduino.cc/Main/DHTLib
dht DHT;
float t1, t2;
float t10, t20;
float t11, t21;
float t12, t22;
float t13, t23;
int h11, h12;
void setup() {
delay(1000);
ucg.begin(UCG_FONT_MODE_TRANSPARENT);
ucg.clearScreen();
ucg.setFont(ucg_font_ncenR14r);
ucg.setColor(255, 0, 255);
ucg.setColor(1, 255, 0,0);
ucg.setRotate90();
ucg.setColor(255, 255, 255); // culoare alba
ucg.drawFrame(0,0,320,240); //
ucg.setFont(ucg_font_courB24); // 20 pixel height
ucg.setColor(255, 0, 0); // culoare rosie
ucg.setPrintPos(60,30);
ucg.print("Ministatie");
ucg.setColor(0, 255, 0); // culoare verde
ucg.setColor(0, 255, 0);
ucg.setColor(0, 0, 255); // culoare albastru
ucg.setPrintPos(17, 60);
ucg.print("meteo cu DHT11");
// ucg.setPrintPos(55, 90);
// ucg.setColor(5, 255, 0); // culoare verde
// ucg.print("si BMP180");
ucg.setFont(ucg_font_fur17r); // 17 pixel height
ucg.setColor(255, 255, 0); // culoare galbena
ucg.setPrintPos(25,120);
ucg.print("ecran grafic 2,2'' (5,6cm)");
ucg.setFont(ucg_font_courB24); // 20 pixel height
ucg.setColor(0, 255, 255); // culoare bleo
ucg.setPrintPos(10,150);
ucg.print("QVGA cu ILI9341");
ucg.setColor(255, 0, 255); // culoare mov
ucg.setPrintPos(20,180);
ucg.print("versiune 4.5.0");
ucg.setFont(ucg_font_fur17r); // 17 pixel height
ucg.setColor(255, 255, 255); // culoare alb
ucg.setPrintPos(60,210);
ucg.print("realizare niq_ro");
delay(5000);
ucg.clearScreen();
t13=40.0;
h12=40.0;
}
void loop() {
// DHT11 part
int chk = DHT.read11(37);
delay(1000);
// timeout;
int h11 = DHT.humidity;
if (DHT.humidity < 0) h11 = 0;
int t12 = DHT.temperature;
int t15 = t12;
float t16 = 10*t15;
t16 = t16/10;
t16 = t12;
if (t16 != t13)
{
temperaturi(t16, t13, 20, 0); // temperature, old temperature, x,y
termometre(t16, 20);
}
if (h11 != h12)
{
// umiditate(h11, h12, 115, 90); // humidity, old humidity, x, y
umiditate(h11, h12, 40, 180); // humidity, old humidity, x, y
barca (h11, h12);
}
//}
delay (30000);
t13=t16;
h12=h11;
} // final de program, se revine de la inceput
void temperaturi(float t3, float t4, int ics, int igrec)
{
int t5 = t3;
int t6 = t4;
ucg.setFont(ucg_font_courB24);
if (t3*t4 < 0)
{ucg.setColor(0, 0, 0);
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(ics+7, qy + igrec , 105);
}
}
int t51 = t5/10;
int t61 = t6/10;
ucg.setColor(0, 0, 0);
if (t51 != t61)
{
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(ics+28, qy + igrec , 21);
}
}
t5 = t3 - t51*10;
t6 = t4 - t61*10;
if (t5 != t6)
{
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(ics+49, qy + igrec , 21);
}
}
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(ics+91, qy + igrec , 21);
}
ucg.setColor(255, 0, 0);
ucg.setPrintPos(10 + ics, 30 + igrec);
//ucg.print("t :");
ucg.print("temperatura:");
ucg.setPrintPos(10 + ics, 60 + igrec);
if (t3 > 10.0) ucg.print("+");
else
if (t3>0.0) ucg.print(" +");
else
if (t3<0.0)
{
t3=-t3;
if (t3 > 10.0) ucg.print("-");
else
if (t3 > 0.0) ucg.print(" -");
}
if (t3==0.0) ucg.print(" ");
ucg.print(t3,1);
ucg.print(" C");
ucg.setFont(ucg_font_fur17r);
ucg.setPrintPos(30 + ics, 35 + igrec);
//if (igrec == 0) ucg.print("int");
//else ucg.print("ext");
ucg.setPrintPos(115 + ics, 50 + igrec);
ucg.print("o");
ucg.setPrintPos(75 + ics, 60 + igrec);
ucg.print(",");
}
void termometre (float t, int ics1)
{
ucg.setColor(255, 255, 255);
ucg.drawFrame(ics1-4,10,9,200);
ucg.drawCircle(ics1,220,10,UCG_DRAW_ALL);
for (int a = 0; a < 10; a++)
{
ucg.drawLine(ics1-5,20+20*a,ics1-7,20+20*a);
ucg.drawLine(ics1+5,20+20*a,ics1+7,20+20*a);
}
ucg.drawLine(ics1-10,140,ics1+10,140);
ucg.setFont(ucg_font_courB24);
ucg.setPrintPos(13 + ics1, 149);
ucg.print("0 C");
ucg.setFont(ucg_font_fur17r);
ucg.setPrintPos(37 + ics1, 135);
ucg.print("o");
int lin = 140 - 2*t;
ucg.setColor(0, 0, 0); // black
ucg.drawBox(ics1-2,21, 5, lin+5);
ucg.setColor(255, 0, 0);
ucg.drawDisc(ics1,220,8,UCG_DRAW_ALL);
ucg.drawBox(ics1-2,lin, 5, 210-lin);
}
void umiditate(int h3, int h4, int zet, int igrec1)
{
ucg.setFont(ucg_font_courB24); // 20 pixel height
// sterg semnul ??
int h51 = h3/10;
int h61 = h4/10;
ucg.setColor(0, 0, 0);
// sterg zeci daca e cazul
if (h51 != h61)
{
//ucg.setColor(255, 255, 0);
ucg.setColor(0, 0, 0);
for (int qy = 39 ; qy < 60; qy++)
{
// ucg.drawHLine(zet+28, qy + igrec1 , 21);
ucg.drawHLine(zet+40, qy + igrec1, 42);
}
}
int h5 = h3 - h51*10;
int h6 = h4 - h61*10;
// sterg unitati daca e cazul
//if ((t5 != t6) || (t5-t6>0.2))
if (h5 != h6)
{
//ucg.setColor(0, 255, 0);
ucg.setColor(0, 0, 0);
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(zet+79, qy + igrec1 , 21);
}
}
ucg.setColor(0, 255, 255);
ucg.setPrintPos(zet, 30 + igrec1);
ucg.print("umiditate:");
//ucg.setFont(ucg_font_fub42n); // 20 pixel height
ucg.setPrintPos(40 + zet, 60 + igrec1);
//if (h3 > 10) ucg.print("+");
if (h3 > 10) ucg.print(" ");
else
{
//ucg.setColor(255, 255, 255);
ucg.setColor(0, 0, 0);
for (int qy = 39 ; qy < 60; qy++)
{
ucg.drawHLine(zet+40, qy + igrec1 , 42);
}
if (igrec1 <30) ucg.setColor(255, 255, 0);
else ucg.setColor(0, 255, 255);
ucg.setPrintPos(61 + zet, 60 + igrec1);
//ucg.print("+");
ucg.print(" ");
}
ucg.print(h3);
ucg.print("%");
}
void barca (int h, int h2) // new humidity, old humidity.,
{
int xx = 280;
int yy = 230;
//sterg barca
//ucg.setColor(100,100,100);
ucg.setColor(0,0,0);
ucg.drawBox(xx-25, yy-20-h2, 50, 30);
//sterg apa
//ucg.setColor(125, 125, 125);
ucg.setColor(0, 0, 0);
ucg.drawBox(xx-35, yy+10-h2, 70, h2-h);
//desenez apa
ucg.setColor(0, 255, 255);
ucg.drawBox(xx-35, yy+10-h, 70, h);
//desenz barcuta;
//desenez carena
ucg.setColor(255, 255, 0);
ucg.drawBox(xx-20, yy-h, 40, 10);
ucg.drawTriangle(xx-25, yy-h, xx-20, yy-h, xx-20, yy+10-h);
ucg.drawTriangle(xx+25, yy-h, xx+20, yy-h, xx+20, yy+10-h);
//desenez catarg
ucg.drawBox(xx-1, yy-20-h, 2, 20);
//desenez velele
ucg.setColor(0, 0, 255); // vela albastra
ucg.drawTriangle(xx+2, yy-20-h, xx+2, yy-h, xx+20, yy-h);
ucg.setColor(255, 0, 0); // vela rosie
ucg.drawTriangle(xx-2, yy-15-h, xx-2, yy-h, xx-20, yy-h);
}
/
Filmuletul, care prezinta modul de afisare, se numeste ministatie meteo cu DHT11 pe ecran TFT de 2.2" cu ILI9341 pe un Arduino DueAm mai facut un film, la lumina zilei, tot in "engleza mea", numit weather station with Arduino Due on ILI9341 2.2" TFT display (2)
http://youtu.be/alhlPWrwYiU TESTAT si de ARelectronics
RăspundețiȘtergeresunt un vechi urmaritor al siteului d-voastra ,amsi cartile d-lui sergiu florica
RăspundețiȘtergeremulte multumiri, cred ca sunt cele mai bune explicatii care le-am intalnit .inca o data multumiri