|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Nem akartam ilyen mélyre menni. Valoban az van, hogy van néhány byte ami minden mást kizár, a többi meg egyszerüen összeadodik. Ahogy a kapu is irta, talán az a legegyszerübb, ha minden beolvasott byteot összehasonlitok azzal a néhány kizároval és ha azonos a korábbiakat átirom az ujjal. Minden más esetben egyszerüen logikailag összeadom. ("or" bit szinten).
Most már caak egy aprobb trükköt kell kitalálni, hogy a két MSB bittel ne foglalkozzon, mert azok függetlenek a dologtol.
Van még egy aproság. A bemenetek impulzus jellegüek, azaz alapbol minden bemenet magas szinten van (0xFF). Ezt az állapotot is ki kell zárni, hogy ne irja át a korábban beolvasott bytet. Csak akkor kezdödjön az összehasonlitás és az átirás vagy hozzáadás, ha legalább egy bit a 0-5 bitek közül 0-ra megy. Még gondolkodom , hogy azt a maradék két bemenetet (bit MSB 6,7) egyáltalán használjam-e, lehet, hogy nem is fog kelleni, de még nem tudom. Az egyszerüsiteni a dolgot, mert azokat fix szintre köthetném.
Na majd holnap kiprobálom.
Ezeket bitenkénti ÉS kapcsolattal ki tudod szűrni. Pl. 0b01010100 & 0b00011111 eredménye 00010100 lesz (ha el nem írtam). Ahol nulla bitet állítasz be a vizsgálatnál, azt kimaszkoltad, nem fog számítani a továbbiakban.
0xFF is egy feltétel, ha a változód értéke nem 0xff, akkor mehet a tesztelés.
szerk: elírtam. A hozzászólás módosítva: Dec 7, 2019
Kb igy gondolom, de a bemeneten egyszerre csak 1 bit lehet a byteban 0 értékü, azaz lehet 0bxx11 1110 és mondjuk 0bxx11 0111 aminek az eredöje 0bxx11 0110 kell, hogy legyen.
De például ha az elsö beolvasott byte 0bxx11 1110 majd jön egy 0bxx11 1011 annak az eredöje csak az utolso byte lehet azaz 0bxx11 1011. ( Az xx bitekkel még nem tudom mi lesz, pillanatnyilag nincs funkciojuk, igy azokat most ignorálni kell ( valoszinü állandoan HIGH-n lesznek.)
Na megyek egy kis hardwaret drotozni meg egy bemeneti segédpanelt, hogy tudjam az asztalon szimulálni az állapotokat.
Addig is köszönöm a segitséget. A hozzászólás módosítva: Dec 8, 2019
Lehet mostanában olyan programozható logikai IC ket kapni mint a 16V8, egyszerű olcsó programozóval meg windowsos programozófelülettel?
Sziasztok!
Arduino témában teljesen kezdő vagyok, ezért szeretnék érdeklődni. Kinéztem egy Starter Kitet, mi a véleményetek erről? Megéri megvenni ennyiért? Esetleg van olcsóbb javaslatotok, kevesebb tartozékkal? Köszönöm előre is a segítséget.
Ha az olcsóság a cél, Kínából a panel 1500 , próbapanel 1000, vezeték 1-2000 ft, lcd 600 . A többi körítést meg ízlés szerint olyat rendelsz amilyet akarsz. A kész csomagoknak az előnye, mindenből ad egy kis ízelítőt. Kipróbált tesztelt kapcsolásokon, és a hozzá tartozó programokon keresztül bemutat mindent, nem neked kell összevadászni. Attól is függ honnét indulsz, ha már van némi elektronikai, programozói fogalmad, fiókban némi alkatrész, akkor csomag nélkül is könnyen meg lehet tanulni , akár egy ingyenes TAVIR-os tanfolyam segítségével is.
Ithon is megteheted töredékéért!
Bővebben: Link
Tudok magyar tan anyagom és könyvek pdf küldeni... A hozzászólás módosítva: Dec 8, 2019
Nem tudom. Soha eddig nem futottam ilyesmivel össze.
Találtam, az Atmel által fejlesztett most már Microchip oldalról letölthető Wincupl
Bővebben: wincupl
Az Atmel által gyártott ATF, ATV PLD - khez lehet benne szerkeszteni programot.
Csak olcsó programozót nem találok ami a mai gépekkel usb n működne, csak egy régi forrásfájlt találtam kapcsolással, igaz az elnec Beeprog programozó ismeri de az meg nem olcsó hobbi kategória
Nem tudom, én ezekkel nem foglalkozom.
Az AVR procikhoz minden megvan és az utobbi idöben még 2 gyorstalpalot is elvégeztem az Arduinobol ( eddig csak ASM-ben programoztam a procikat).
Igy most egy NANO-t probálok rákenyszeriteni, hogy azt tegye amit akarok.
Igy sajnos nem tudok segiteni.
Nagyon köszönöm, hogy ennyit dolgoztál vele!
De amire szükség van még, az az SPI, a soros port és a delay, így ez nem biztos, hogy működőképes lesz.
Azt hiszem, másik panelra lesz szükség.
(A 3-as lábon alapból megvan a 980 Hz, azt talán át lehetne tenni másik lábra.
Egyébként a tízes lábon csak nagyon pici jel van, de nem tudom szkóppal nézni., csak egy piezoval hallgatom.)
Még egyszer köszönöm!
"Azt hiszem, másik panelra lesz szükség" - szerintem nem.
Szia.
Nem rossz az a starter kit, szerintem jó döntés.
Elindulni biztos, hogy el tudsz vele az Arduino világában, de iszonyú hamar ki fogod nőni.
Ha a 4-es timert frankón vágnám, akkor minden frankó lenne ennél a panelnél is. A 16 bites timereknek pedig nincsen az összes lába kivezetve.
Az én eddigi tudásommal ez van. De azért majd ráerőlködök arra a 10 bites 4-es timerre.
Én általában LGT8F328P-t használok, és abban nincsen ilyen 10 bites csoda.
Az utolsó hozzászólásra válaszolok, de köszönöm szépen mindenkinek a segítséget. A TávIR-os készlet nagyon tetszik és jóval olcsóbb, én ezt nem is találtam meg. A készlet jobban tetszik, mint egyesével összevadászni, így biztos nem marad ki semmi. Még informálódok kicsit a témban, de sokat segítettek, köszi.
Összeállitottam egy táblázatot ahol az egyes kombináciok viszonyát látni.
0.... átirja az elözöt
1.....hozzáadja az elözöhöz
A táblázatban nincs az alaphelyzet amikor a byte tartalma 0xFF, akkor nem csinál semmit csak szkenneli a többi portot.
Minde LU egy byte.
Xxx. LU1. LU2. LU3. LU4. LU5. LU6
LU1. - 0. 0. 1. 1. 1
LU2. 0. - 0. 0. 1. 1
LU3. 0. 0. - 0. 0. 0
LU4. 1. 0. 0. - 0. 0
LU5. 1. 1. 0. 0. - 0
LU6. 1. 1. 0. 0. 0. -
A képen a HW egy része valamint a tesztelö modul, ahol szimulálni tudom a bemeneteket.
A készletekben az a jó, hogy megkapsz egy tananyagot és hozzá "mindent" egy szép dobozban. És az a rossz, hogy 3x-10x annyiba kerül, mintha magadnak összevadászod.
Az alza.hu-s készlet alkatrészeinek reális ára (ebay/hazai kisker):
- az Uno 1e Ft
- a breadboard és a kábelek 1e Ft
- kijelző 500 Ft
- a 2 optó 150 Ft, a 2 FET 300 Ft
- a végén a tranyók, kondik, diódák, ellenállások és LED-ek ára kb. 5 Ft/db (szumma 500 Ft kb.)
- a többi cucc pedig hasra ütve kb. 300 Ft/db áron lehet be lehet szerezni.
Adafruit_SSD1306 könyvtárból hogy lehet kikapcsolni a Adafruit logot?
splash.h tartalmának hex törlése nem segít (hangyás képet) jön elő oledre 1s re ha betölt az kijelző még akor is ha teljesen törlöm a kijelzőt ezekel a parancsokat!
Hogy lehet kikapcsolni splash.h ne vegye figyelembe?
display.display();
display.clearDisplay();
Egy nagyon naiv kérdés:
Van arra lehetőség, hogy a "dual slope" PWM-eket "single slope"-ra állítsuk?
Ezzel megduplázódna a 480 Hz-es frekvencia.
Van még ilyen is, ilyen is.
Tudok még javasolni relé modult is, pl. ilyet. ..de egy ilyen vezérelhető LED szalagból is egy csomó minden kihozható, ami csak fénykigyó.
Ha már unod a vezetékeket, és ki-be ragosgatni a tüskéket, elgörbül, stb, vehetsz egy ilyen sorkapcsot is, bár ez a kisebbik fajtából való.
Jó szórakozást.
Sziasztok. Hasonló menüt szeretnék létrehozni, viszont nekem ezt egy .h fájlba kéne megoldanom.
Ha így írom:
class Display {
public:
Display();
private:
int pageCount;
void pageClock();
void pageRelay();
void pageTemp();
void (*pages[])() = { pageClock, pageRelay, pageTemp };
};
akkor az alábbi hibaüzenetet kapom:
Ha konstruktorba akarok neki értéket adni így:
class Display {
public:
Display();
private:
int pageCount;
void pageClock();
void pageRelay();
void pageTemp();
void (*pages[])();
};
Display::Display() {
pageCount = 2;
(*pages[])() = { pageClock, pageRelay, pageTemp };
}
Akkor az alábbi hibaüzenetet kapom:
Idézet: „lib\Display\Display.cpp:7:12: error: expected primary-expression before ']' token
(*pages[])() = { pageClock, pageRelay, pageTemp };
^”
Valaki tudna segíteni, hogy hogyan tudnám ezt megoldani?
Sziasztok!
Vettem egy 320x240 es SPI IL9341 kijelzőt de csak fehéren világít és hatalmas áramfelvétele van.
Bekötöttem úgy is hogy csak 1k volt sorban az adatkábelekben és fesz osztómódban is 470Ω és 1k segítségével hogy 3.3v legyen a vezérlés.
Mi lehet a gondja?
/***************************************************
This is our GFX example for the Adafruit ILI9341 Breakout and Shield
Check out the links above for our tutorials and wiring diagrams
These displays use SPI to communicate, 4 or 5 pins are required to
interface (RST is optional)
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
Written by Limor Fried/Ladyada for Adafruit Industries.
MIT license, all text above must be included in any redistribution
****************************************************/
#define ILI9341_BLACK 0x0000 ///< 0, 0, 0
#define ILI9341_NAVY 0x000F ///< 0, 0, 123
#define ILI9341_DARKGREEN 0x03E0 ///< 0, 125, 0
#define ILI9341_DARKCYAN 0x03EF ///< 0, 125, 123
#define ILI9341_MAROON 0x7800 ///< 123, 0, 0
#define ILI9341_PURPLE 0x780F ///< 123, 0, 123
#define ILI9341_OLIVE 0x7BE0 ///< 123, 125, 0
#define ILI9341_LIGHTGREY 0xC618 ///< 198, 195, 198
#define ILI9341_DARKGREY 0x7BEF ///< 123, 125, 123
#define ILI9341_BLUE 0x001F ///< 0, 0, 255
#define ILI9341_GREEN 0x07E0 ///< 0, 255, 0
#define ILI9341_CYAN 0x07FF ///< 0, 255, 255
#define ILI9341_RED 0xF800 ///< 255, 0, 0
#define ILI9341_MAGENTA 0xF81F ///< 255, 0, 255
#define ILI9341_YELLOW 0xFFE0 ///< 255, 255, 0
#define ILI9341_WHITE 0xFFFF ///< 255, 255, 255
#define ILI9341_ORANGE 0xFD20 ///< 255, 165, 0
#define ILI9341_GREENYELLOW 0xAFE5 ///< 173, 255, 41
#define ILI9341_PINK 0xFC18 ///< 255, 130, 198
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
// For the Adafruit shield, these are the default.
#define TFT_CLK 13
#define TFT_MISO 12
#define TFT_MOSI 11
#define TFT_DC 9
#define TFT_CS 10
#define TFT_RST 8
// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
// If using the breakout, change pins as desired
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);
void setup() {
Serial.begin(9600);
Serial.println("ILI9341 Test!");
tft.begin();
// read diagnostics (optional but can help debug problems)
uint8_t x = tft.readcommand8(ILI9341_RDMODE);
Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX);
x = tft.readcommand8(ILI9341_RDMADCTL);
Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX);
x = tft.readcommand8(ILI9341_RDPIXFMT);
Serial.print("Pixel Format: 0x"); Serial.println(x, HEX);
x = tft.readcommand8(ILI9341_RDIMGFMT);
Serial.print("Image Format: 0x"); Serial.println(x, HEX);
x = tft.readcommand8(ILI9341_RDSELFDIAG);
Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX);
/*
Serial.println(F("Benchmark Time (microseconds)"));
delay(10);
Serial.print(F("Screen fill "));
Serial.println(testFillScreen());
delay(500);
Serial.print(F("Text "));
Serial.println(testText());
delay(3000);
Serial.print(F("Lines "));
Serial.println(testLines(ILI9341_CYAN));
delay(500);
Serial.print(F("Horiz/Vert Lines "));
Serial.println(testFastLines(ILI9341_RED, ILI9341_BLUE));
delay(500);
Serial.print(F("Rectangles (outline) "));
Serial.println(testRects(ILI9341_GREEN));
delay(500);
Serial.print(F("Rectangles (filled) "));
Serial.println(testFilledRects(ILI9341_YELLOW, ILI9341_MAGENTA));
delay(500);
Serial.print(F("Circles (filled) "));
Serial.println(testFilledCircles(10, ILI9341_MAGENTA));
Serial.print(F("Circles (outline) "));
Serial.println(testCircles(10, ILI9341_WHITE));
delay(500);
Serial.print(F("Triangles (outline) "));
Serial.println(testTriangles());
delay(500);
Serial.print(F("Triangles (filled) "));
Serial.println(testFilledTriangles());
delay(500);
Serial.print(F("Rounded rects (outline) "));
Serial.println(testRoundRects());
delay(500);
Serial.print(F("Rounded rects (filled) "));
Serial.println(testFilledRoundRects());
delay(500);
Serial.println(F("Done!"));
*/
}
void loop(void) {
tft.fillScreen(ILI9341_NAVY);
tft.setCursor(0, 0);
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1);
tft.println("Hello World!");
tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2);
tft.println(1234.56);
tft.setTextColor(ILI9341_RED); tft.setTextSize(3);
tft.println(0xDEADBEEF, HEX);
tft.println();
tft.setTextColor(ILI9341_GREEN);
tft.setTextSize(5);
tft.println("Groop");
tft.setTextSize(2);
tft.println("I implore thee,");
tft.setTextSize(1);
tft.println("my foonting turlingdromes.");
tft.println("And hooptiously drangle me");
tft.println("with crinkly bindlewurdles,");
tft.println("Or I will rend thee");
tft.println("in the gobberwarts");
tft.println("with my blurglecruncheon,");
tft.println("see if I don't!");
delay(5000);
}
unsigned long testFillScreen() {
unsigned long start = micros();
tft.fillScreen(ILI9341_BLACK);
yield();
tft.fillScreen(ILI9341_RED);
yield();
tft.fillScreen(ILI9341_GREEN);
yield();
tft.fillScreen(ILI9341_BLUE);
yield();
tft.fillScreen(ILI9341_BLACK);
yield();
return micros() - start;
}
unsigned long testText() {
tft.fillScreen(ILI9341_BLACK);
unsigned long start = micros();
tft.setCursor(0, 0);
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1);
tft.println("Hello World!");
tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2);
tft.println(1234.56);
tft.setTextColor(ILI9341_RED); tft.setTextSize(3);
tft.println(0xDEADBEEF, HEX);
tft.println();
tft.setTextColor(ILI9341_GREEN);
tft.setTextSize(5);
tft.println("Groop");
tft.setTextSize(2);
tft.println("I implore thee,");
tft.setTextSize(1);
tft.println("my foonting turlingdromes.");
tft.println("And hooptiously drangle me");
tft.println("with crinkly bindlewurdles,");
tft.println("Or I will rend thee");
tft.println("in the gobberwarts");
tft.println("with my blurglecruncheon,");
tft.println("see if I don't!");
return micros() - start;
}
unsigned long testLines(uint16_t color) {
unsigned long start, t;
int x1, y1, x2, y2,
w = tft.width(),
h = tft.height();
tft.fillScreen(ILI9341_BLACK);
yield();
x1 = y1 = 0;
y2 = h - 1;
start = micros();
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
x2 = w - 1;
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
t = micros() - start; // fillScreen doesn't count against timing
yield();
tft.fillScreen(ILI9341_BLACK);
yield();
x1 = w - 1;
y1 = 0;
y2 = h - 1;
start = micros();
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
x2 = 0;
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
t += micros() - start;
yield();
tft.fillScreen(ILI9341_BLACK);
yield();
x1 = 0;
y1 = h - 1;
y2 = 0;
start = micros();
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
x2 = w - 1;
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
t += micros() - start;
yield();
tft.fillScreen(ILI9341_BLACK);
yield();
x1 = w - 1;
y1 = h - 1;
y2 = 0;
start = micros();
for(x2=0; x2<w; x2+=6) tft.drawLine(x1, y1, x2, y2, color);
x2 = 0;
for(y2=0; y2<h; y2+=6) tft.drawLine(x1, y1, x2, y2, color);
yield();
return micros() - start;
}
unsigned long testFastLines(uint16_t color1, uint16_t color2) {
unsigned long start;
int x, y, w = tft.width(), h = tft.height();
tft.fillScreen(ILI9341_BLACK);
start = micros();
for(y=0; y<h; y+=5) tft.drawFastHLine(0, y, w, color1);
for(x=0; x<w; x+=5) tft.drawFastVLine(x, 0, h, color2);
return micros() - start;
}
unsigned long testRects(uint16_t color) {
unsigned long start;
int n, i, i2,
cx = tft.width() / 2,
cy = tft.height() / 2;
tft.fillScreen(ILI9341_BLACK);
n = min(tft.width(), tft.height());
start = micros();
for(i=2; i<n; i+=6) {
i2 = i / 2;
tft.drawRect(cx-i2, cy-i2, i, i, color);
}
return micros() - start;
}
unsigned long testFilledRects(uint16_t color1, uint16_t color2) {
unsigned long start, t = 0;
int n, i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(ILI9341_BLACK);
n = min(tft.width(), tft.height());
for(i=n; i>0; i-=6) {
i2 = i / 2;
start = micros();
tft.fillRect(cx-i2, cy-i2, i, i, color1);
t += micros() - start;
// Outlines are not included in timing results
tft.drawRect(cx-i2, cy-i2, i, i, color2);
yield();
}
return t;
}
unsigned long testFilledCircles(uint8_t radius, uint16_t color) {
unsigned long start;
int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2;
tft.fillScreen(ILI9341_BLACK);
start = micros();
for(x=radius; x<w; x+=r2) {
for(y=radius; y<h; y+=r2) {
tft.fillCircle(x, y, radius, color);
}
}
return micros() - start;
}
unsigned long testCircles(uint8_t radius, uint16_t color) {
unsigned long start;
int x, y, r2 = radius * 2,
w = tft.width() + radius,
h = tft.height() + radius;
// Screen is not cleared for this one -- this is
// intentional and does not affect the reported time.
start = micros();
for(x=0; x<w; x+=r2) {
for(y=0; y<h; y+=r2) {
tft.drawCircle(x, y, radius, color);
}
}
return micros() - start;
}
unsigned long testTriangles() {
unsigned long start;
int n, i, cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(ILI9341_BLACK);
n = min(cx, cy);
start = micros();
for(i=0; i<n; i+=5) {
tft.drawTriangle(
cx , cy - i, // peak
cx - i, cy + i, // bottom left
cx + i, cy + i, // bottom right
tft.color565(i, i, i));
}
return micros() - start;
}
unsigned long testFilledTriangles() {
unsigned long start, t = 0;
int i, cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(ILI9341_BLACK);
start = micros();
for(i=min(cx,cy); i>10; i-=5) {
start = micros();
tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
tft.color565(0, i*10, i*10));
t += micros() - start;
tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i,
tft.color565(i*10, i*10, 0));
yield();
}
return t;
}
unsigned long testRoundRects() {
unsigned long start;
int w, i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(ILI9341_BLACK);
w = min(tft.width(), tft.height());
start = micros();
for(i=0; i<w; i+=6) {
i2 = i / 2;
tft.drawRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(i, 0, 0));
}
return micros() - start;
}
unsigned long testFilledRoundRects() {
unsigned long start;
int i, i2,
cx = tft.width() / 2 - 1,
cy = tft.height() / 2 - 1;
tft.fillScreen(ILI9341_BLACK);
start = micros();
for(i=min(tft.width(), tft.height()); i>20; i-=6) {
i2 = i / 2;
tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0));
yield();
}
return micros() - start;
}
A hozzászólás módosítva: Dec 10, 2019
Hali!
Ugyanilyen fut nekem esp8266-al.
Ha kihozod Kispestre, kipróbálhatjuk a tiédet működőképes-e
Szia!
Nagyatádtól elég messze vagy, de ha megosztanád velem a kapcsolási rajzot és a programot /elég ha valamit kiír/ az már nagy segítség lenne.
A soros monitoron ezt adja vissza:
ILI9341 Test!
Display Power Mode: 0x0
MADCTL Mode: 0x0
Pixel Format: 0x0
Image Format: 0x0
Self Diagnostic: 0x0
Benchmark Time (microseconds)
Screen fill 28742796
Text 1475840
Lines 13813088
Horiz/Vert Lines 2340728
Rectangles (outline) 1488336
Rosszul kötöttem be ,most már van soros monitoron érték de továbbra is fehér a kijelző.
ILI9341 Test!
19:14:11.646 -> Display Power Mode: 0x94
19:14:11.646 -> MADCTL Mode: 0x2C
19:14:11.680 -> Pixel Format: 0x3
19:14:11.714 -> Image Format: 0x80
19:14:11.714 -> Self Diagnostic: 0xC0 A hozzászólás módosítva: Dec 11, 2019
|
|