First, I use Arduino Uno then I use Arduino Mega for control this display. Between Arduino board (Uno or Mega) I use CD4050 for convert voltage level, because Uno and mega works with 5V logical level and display with ILI9341 driver works with 3.3V.
After several attempts I chose ucglib library because is like u8glb library, that I used it at monochrome Nokia mobile displays (like Nokia 3310 display with 84x48 resolution using PCD8544 driver or Nokia 3410 display with 95x64 resolution using PCF8812 driver 3410) or at monochrome display with 128x64 resolution using ST7920 driver.
I tested with very good results the ucglib library with Arduino Uno & Due for control the colour graphic display with 320x240 resolution using ILI9341 driver and I write few article in roumanian language, who is my native language.
Also, I write an article in roumanian language with Arduino Due who control the colour graphic display with 320x240 resolution using ILI9341 driver: Arduino Due si afisajul QVGA de 2,2" (5,6cm) comandat de ILI9341.
Now, I make a summary of that article for interested people...
Arduino Due is more powerfull then other Arduino boards, becouse runs at 3.3V (maximum tolerate voltage at input or output pins is 3.3V).
Using informations from article named How to Connect a ILI9341 Display I connect directly pins from Arduino Due and display, like in this picture:
In my case, schematic is:
First, I made a weather station with DTH11 sensor for humidity and BMP180 for pressure and temperature, schematic is:
Then, I simplified the sketch for using just DHT11 sensor for humidity and temperature:
Practical, wirred is:
My original sketck for full weather station with BMP180 and DHT11 is:
/*
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);
}
/
Sketch for simplified weather station just DHT11 is:
/*
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);
}
/
I made two movies for understand better what is on display:
Information are displayed in the roumanian language, but you may change easy...
For upload sketch for Arduino Due must update Arduino IDE software; now current version is Arduino IDE 1.5.7. BETA.
I wait with interest your views and comments!!!
Hey, why an error?
ReplyDeleteArduino: 1.5.8 (Windows 7), Board: "Arduino Due (Programming Port)"
Build options changed, rebuilding all
In file included from sketch_nov30a.ino:6:0:
C:\Program Files\Arduino\libraries\SPI/SPI.h: In static member function 'static byte SPIClass::transfer(byte)':
C:\Program Files\Arduino\libraries\SPI/SPI.h:56:3: error: 'SPDR' was not declared in this scope
SPDR = _data;
^
C:\Program Files\Arduino\libraries\SPI/SPI.h:57:12: error: 'SPSR' was not declared in this scope
while (!(SPSR & _BV(SPIF)))
^
C:\Program Files\Arduino\libraries\SPI/SPI.h:57:23: error: 'SPIF' was not declared in this scope
while (!(SPSR & _BV(SPIF)))
^
C:\Program Files\Arduino\libraries\SPI/SPI.h:57:27: error: '_BV' was not declared in this scope
while (!(SPSR & _BV(SPIF)))
^
C:\Program Files\Arduino\libraries\SPI/SPI.h: In static member function 'static void SPIClass::attachInterrupt()':
C:\Program Files\Arduino\libraries\SPI/SPI.h:63:3: error: 'SPCR' was not declared in this scope
SPCR |= _BV(SPIE);
^
C:\Program Files\Arduino\libraries\SPI/SPI.h:63:15: error: 'SPIE' was not declared in this scope
SPCR |= _BV(SPIE);
^
C:\Program Files\Arduino\libraries\SPI/SPI.h:63:19: error: '_BV' was not declared in this scope
SPCR |= _BV(SPIE);
^
C:\Program Files\Arduino\libraries\SPI/SPI.h: In static member function 'static void SPIClass::detachInterrupt()':
C:\Program Files\Arduino\libraries\SPI/SPI.h:67:3: error: 'SPCR' was not declared in this scope
SPCR &= ~_BV(SPIE);
^
C:\Program Files\Arduino\libraries\SPI/SPI.h:67:16: error: 'SPIE' was not declared in this scope
SPCR &= ~_BV(SPIE);
^
C:\Program Files\Arduino\libraries\SPI/SPI.h:67:20: error: '_BV' was not declared in this scope
SPCR &= ~_BV(SPIE);
^
Ошибка компиляции.
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
With this problem figured out, but there was another library DHT
ReplyDeleteArduino: 1.5.8 (Windows 7), Board: "Arduino Due (Programming Port)"
In file included from C:\Program Files (x86)\Arduino\hardware\arduino\sam\cores\arduino/Arduino.h:189:0,
from C:\Users\vovanw7\Documents\Arduino\libraries\DHTlib\dht.h:19,
from C:\Users\vovanw7\Documents\Arduino\libraries\DHTlib\dht.cpp:37:
C:\Users\vovanw7\Documents\Arduino\libraries\DHTlib\dht.cpp: In member function 'int dht::_readSensor(uint8_t, uint8_t, uint8_t)':
C:\Program Files (x86)\Arduino\hardware\arduino\sam\variants\arduino_due_x/variant.h:62:65: error: invalid conversion from 'Pio*' to 'uint8_t {aka unsigned char}' [-fpermissive]
#define digitalPinToPort(P) ( g_APinDescription[P].pPort )
^
C:\Users\vovanw7\Documents\Arduino\libraries\DHTlib\dht.cpp:116:20: note: in expansion of macro 'digitalPinToPort'
uint8_t port = digitalPinToPort(pin);
^
C:\Program Files (x86)\Arduino\hardware\arduino\sam\variants\arduino_due_x/variant.h:66:44: error: base operand of '->' is not a pointer
#define portInputRegister(port) ( &(port->PIO_PDSR) )
^
C:\Users\vovanw7\Documents\Arduino\libraries\DHTlib\dht.cpp:117:29: note: in expansion of macro 'portInputRegister'
volatile uint8_t *PIR = portInputRegister(port);
^
Ошибка компиляции.
This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.
inside sketch is put a link for download librari DHT for Arduino Due: http://playground.arduino.cc/Main/DHTLib
Deletetry it ;)
Поставил библиотеку по этой ссылке:http://playground.arduino.cc/Main/DHTLib
ReplyDeleteОшибка все равно появляется
Put the library at this link:http://playground.arduino.cc/Main/DHTLib
ReplyDeleteThe error still appears
On Mega2560 compiles fine, on no DUE
ReplyDeletetry: https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib
ReplyDeleteI try sketch using another computer and is ok.. if you don't have same luck as me, please give me your email or sens me a mail (in at contact data)
ReplyDeleteLibrary installed on your new link https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib, goes all the same error,my mail vovanxp@rambler.ru
ReplyDeleteSuccess! To use the library DHT version 0.1.13
ReplyDeleteHi can You help me with this errors? What to do?
ReplyDeleteC:\Users\L\Documents\Arduino\aaa\aaa.ino: In function 'void setup()':
aaa:52: error: 'ucg_font_ncenR14r' was not declared in this scope
ucg.setFont(ucg_font_ncenR14r);
^
aaa:59: error: 'ucg_font_courB24' was not declared in this scope
ucg.setFont(ucg_font_courB24); // 20 pixel height
^
aaa:71: error: 'ucg_font_fur17r' was not declared in this scope
ucg.setFont(ucg_font_fur17r); // 17 pixel height
^
C:\Users\L\Documents\Arduino\aaa\aaa.ino: In function 'void temperaturi(float, float, int, int)':
aaa:146: error: 'ucg_font_courB24' was not declared in this scope
ucg.setFont(ucg_font_courB24);
^
aaa:196: error: 'ucg_font_fur17r' was not declared in this scope
ucg.setFont(ucg_font_fur17r);
^
C:\Users\L\Documents\Arduino\aaa\aaa.ino: In function 'void termometre(float, int)':
aaa:220: error: 'ucg_font_courB24' was not declared in this scope
ucg.setFont(ucg_font_courB24);
^
aaa:223: error: 'ucg_font_fur17r' was not declared in this scope
ucg.setFont(ucg_font_fur17r);
^
C:\Users\L\Documents\Arduino\aaa\aaa.ino: In function 'void umiditate(int, int, int, int)':
aaa:236: error: 'ucg_font_courB24' was not declared in this scope
ucg.setFont(ucg_font_courB24); // 20 pixel height
^
C:\Users\L\Documents\Arduino\aaa\aaa.ino: In function 'void presiune(int, int, int, int)':
aaa:335: error: 'ucg_font_courB24' was not declared in this scope
ucg.setFont(ucg_font_courB24); // 20 pixel height
^
exit status 1
'ucg_font_ncenR14r' was not declared in this scope
you have SPI & Ucglib libraries?
DeleteSPI yes, and Ucglib lib. I have this.
Deletehttps://github.com/olikraus/Ucglib_Arduino/releases/tag/v1.3.3
I think it is something about the Ucglib libraries and fonts, but I don't know what ...?
Deletetry to use various version of Arduino Ide, eg, if you use 1.6.5 try with 1.0.4..
ReplyDeleteThe Fix for aaa:52: error: 'ucg_font_ncenR14r' was not declared in this scope
ReplyDeleteucg.setFont(ucg_font_ncenR14r);
CHANGE ucg.setFont(ucg_font_ncenR14r); TO ucg.setFont(ucg_font_ncenR14_tr)
(See https://github.com/olikraus/ucglib/wiki/reference#migration-from-v101-to-v102) Rename Fonts r changed to _tr.
Good luck,
Mike
yes for font r become _tr, and whatabout font_courB24 ?
ReplyDeletethanks
Try changing ucg.setFont(ucg_font_courB24); TO ucg.setFont(ucg_font_courB24_tf);
ReplyDeleteI do not know if this works as I have not tried nor verified it.
Good luck
Font " ucg_font_courB24_tf " verified to work OK
ReplyDeleteGood luck