08-04-2019, 14:58
Hej, mam pewien problem. Pisałam dość prosty, lecz rozbudowany program na Leonardo. Miał on wyświetlać menu, i zależnie od naciśniętej opcji,umożliwiać rysowanie (i na karcie sd zapisywac współrzędne naciśniecia), zapisywać na karcie sd, w pliku napis testowy, lub odczytywać z karty sd i wyświetlac na ekraniku tekst zapisany w pliku.
Na arduino Leonardo wszystko pięknie działało, ale niestety brak miejsca zmusił mnie do zakupu zamiennika arduino Mega 2560. Wszystko podpięłam dobrze, ale niestety pojawił się problem z zapisem/odczytem z/na karte sd (biblioteka SD.h). Czy ktoś jest mi w stanie pomóc?
Płytka: RobotDyn MEGA CH340/A Tmega 2560
Biblioteka: SD.h
Wyświetlacz (z portem na karte SD): TJCTM24024-SPI ( 2.4". 240x 320)
Podłączenie:
T_IRQ -> 7
T_DO -> 6
T_DIN -> 5
T_CS -> 4
T_CLK -> 3
MISO -> 50
MOSI > 51
LED > 5v
SCK > 52
D/C > 46
RST > 48
CS > 53
SD_SCK > 22
(ICSP)
SD_MISO > 1
SD_MOSI > 4
SD_CS > 3
Ps. Obawiam się że może to być kwestia źle zdefiniowanych pinów, ale nie wiem jak sobie z tym poradzić przy tej bibliotece
Ps2. Funkcja guz() jest przezemnie napisana, i po prostu wyświetla guziczek w odpowiednim miejscu na ekranie
Z góry dziękuje za pomoc i pozdrawiam
Na arduino Leonardo wszystko pięknie działało, ale niestety brak miejsca zmusił mnie do zakupu zamiennika arduino Mega 2560. Wszystko podpięłam dobrze, ale niestety pojawił się problem z zapisem/odczytem z/na karte sd (biblioteka SD.h). Czy ktoś jest mi w stanie pomóc?
Płytka: RobotDyn MEGA CH340/A Tmega 2560
Biblioteka: SD.h
Wyświetlacz (z portem na karte SD): TJCTM24024-SPI ( 2.4". 240x 320)
Podłączenie:
T_IRQ -> 7
T_DO -> 6
T_DIN -> 5
T_CS -> 4
T_CLK -> 3
MISO -> 50
MOSI > 51
LED > 5v
SCK > 52
D/C > 46
RST > 48
CS > 53
SD_SCK > 22
(ICSP)
SD_MISO > 1
SD_MOSI > 4
SD_CS > 3
Ps. Obawiam się że może to być kwestia źle zdefiniowanych pinów, ale nie wiem jak sobie z tym poradzić przy tej bibliotece
Ps2. Funkcja guz() jest przezemnie napisana, i po prostu wyświetla guziczek w odpowiednim miejscu na ekranie
Kod:
#include "SD.h"
#include "Adafruit_ILI9341.h"
#include "URTouch.h"
#define TFT_DC 46
#define TFT_CS 53
#define TFT_RST 48
#define TFT_MISO 50
#define TFT_MOSI 51
#define TFT_CLK 52
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);
#define T_CLK 3
#define T_CS 4
#define T_DIN 5
#define T_DOUT 6
#define T_IRQ 7
File myFile;
URTouch ts(T_CLK, T_CS, T_DIN, T_DOUT, T_IRQ);
[...]
void zczytajPiksele(int x, int y)
{
myFile.print(x);
myFile.print(",");
myFile.print(y);
myFile.print("; ");
myFile.println();
}
void wyswietlSD()
{
int x,y;
tft.setTextSize(1);
tft.setTextColor(ILI9341_BLACK);
tft.setCursor(10,80);
tft.print("wywołano funkcje wyswietl");
SD.begin(22);
myFile = SD.open("kord.txt");
if (myFile)
{
tft.setCursor(10,20);
tft.println("kord.txt:");
while (myFile.available())
{
tft.write(myFile.read());
}
myFile.close();
}
else
{
tft.setCursor(10,20);
tft.println("error opening kordynaty.txt");
}
}
void zapisz()
{
tft.setTextSize(1);
tft.setTextColor(ILI9341_BLACK);
tft.setCursor(10,80);
tft.print("wywołano funkcje zapisz");
tft.setCursor(10,18);
tft.print("Initializing SD card...");
SD.begin(22);
/*if (!SD.begin(22))
{
tft.println("initialization failed!");
return;
}*/
tft.println("initialization done.");
myFile = SD.open("test.txt", FILE_WRITE);
tft.setCursor(10,28);
if (myFile)
{
tft.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
myFile.close();
tft.setCursor(10,38);
tft.println("done."); //Wysyłanie i wyświetlanie koordynat 178 lin
}
else
{
tft.println("error opening test.txt");
}
}
[...]
void rysowanie()
{
int x, y;
tft.setTextSize(1);
tft.setTextColor(ILI9341_BLACK);
tft.setCursor(10,10);
tft.print("Naciśnięto pierwszy przycisk. Rysowanie");
guz(240,190,80,50,2,270,210,"BACK");
//SD.begin(22);
//myFile = SD.open("kord.txt", FILE_WRITE);
while(!(x>240&&y>190&&x<320&&y<240))
{
ts.read();
x = ts.getX();
y = ts.getY();
x += 13;
y += 4;
int radius = 2;
tft.fillCircle(x, y, radius, ILI9341_BLACK);
//zczytajPiksele(x,y);
}
//myFile.close();
}
void przyc2()
{
int x,y;
tft.setTextSize(1);
tft.setTextColor(ILI9341_BLACK);
tft.setCursor(10,10);
tft.print("Naciśnięto Drugi przycisk");
guz(240,190,80,50,2,270,210,"BACK");
zapisz();
while(!(x>240&&y>190&&x<320&&y<240))
{
ts.read();
x = ts.getX();
y = ts.getY();
}
}
void przyc3()
{
int x,y;
tft.setTextSize(1);
tft.setTextColor(ILI9341_BLACK);
tft.setCursor(10,10);
tft.print("Naciśnięto trzeci przycisk");
guz(240,190,80,50,2,270,210,"BACK");
wyswietlSD();
while(!(x>240&&y>190&&x<320&&y<240))
{ts.read();
x = ts.getX();
y = ts.getY();
}
}
[...]
Void setup(){
tft.begin();
tft.setRotation(1);
ts.InitTouch();
ts.setPrecision(PREC_MEDIUM);
tft.fillScreen(ILI9341_BLACK);
guz(0,0,320,80,3,100,40,"rysowanie");
guz(0,81,160,80,2,40,100,"tesZap");
guz(161,81,160,80,2,220,100,"wysw");
guz(0,161,80,65,1,40,190,"nFol");
tft.setTextColor(ILI9341_GREEN);
tft.setTextSize(2);
tft.setCursor(20,220);
tft.print("By Kinga Snuszka");
}
void loop()
{
int x, y;
String nazFol;
while(ts.dataAvailable())
{
ts.read(); //Wysyłanie i wyświetlanie koordynat 178 lin
x = ts.getX();
y = ts.getY();
Serial.print(x); Serial.print(','); Serial.println(y);// + " " + Y);
if (y<80&&x<320&&x>0&&y>0)
{
czysc();
rysowanie();
setup();
}
if(x>0&&y>81&&x<160&&y<160)
{
czysc();
przyc2();
setup();
}
else
{
if(x>160&&y>80&&x<320&&y<160)
{
czysc();
przyc3();
setup();
}