Fórum témák
- • Alternativ HE találkozó(k)
- • SMD, mi a típusa?
- • IMI villanymotor
- • Erősítő mindig és mindig
- • Audiofil, High End Audio
- • Mosógép vezérlők és általános problémáik
- • Analóg oszcilloszkóp javítása
- • Varrógép elektronika
- • Elfogadnám, ha ingyen elvihető
- • Boombox javítás
- • Központi fűtés (vezérlés)
- • Videomagnó problémák
- • Elektromos távirányítós kapunyitó
- • Műhelyünk felszerelése, szerszámai
- • Borhűtő vezérlő panel
- • Kombikazán működési hiba
- • Számítógép hiba, de mi a probléma?
- • Szünetmentes táp javítása, élesztése
- • Hűtőgép probléma
- • Súlymérés
- • Videoton EA-7386-s erösítő
- • Digitális mérleg
- • Kapcsolási rajzot keresek
- • TV hiba, mi a megoldás?
- • Felajánlás, azaz ingyen elvihető
- • Triak és tirisztor helyettesítése
- • Rádióamatőrök topikja
- • Hangszórójavítás (otthon)
- • LED-es világítás
- • Whirlpool mosógép
- • Vásárlás, hol kapható?
- • Autóelektronika
- • Hangváltók (készítése)
- • Kondenzátor
- • Függvénygenerátor építése
- • Vicces - mókás történetek
- • Klíma beszerelése, fűtés-hűtés házilag
- • Dobozolási technikák, műszerdobozok
- • Forrasztópákák - melyik miért jó
- • CPLD, FPGA - Miértek, hogyanok
- • Eredményjelző
- • Klíma szervizelés, javítás
- • V-FET és SIT erősítő kapcsolások
- • Érdekességek
- • Autós erősítős kérdések, problémák
- • Padlófűtés vezérlés
- • Li-Ion saját akkucsomag készítése
- • Tranzisztor teszter
- • Elektromos kerékpár, robogó házilag
- • Arduino
- • TDA7294 végerősítő
- • 3D nyomtatás
- • Alaplap kérdések
- • TDA7293 végerősítő
- • Tranzisztorok helyettesítése
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Ezért kellene egyeztetni az lcd bekötését!
igy van definiálva:
UTFT::UTFT(byte model, int RS, int WR,int CS, int RST, int SER)
Tehát a te modulod bekötéséhez igazítod a beállítást:
UTFT myGLCD(SPFD5408A,rs,wr,cs,rst);
vagy:
UTFT myGLCD(SPFD5408B,rs,wr,cs,rst);
Áthozhatod a számokat, az elöző alkalmazásból, ha nem ismered. A hozzászólás módosítva: Máj 16, 2016
Hát, jó pancser vagyok, de tuti vagy hiányzik még valami, vagy rosszul van beállítva.
Ez a kód megy:
// IMPORTANT: Adafruit_TFTLCD LIBRARY MUST BE SPECIFICALLY
// CONFIGURED FOR EITHER THE TFT SHIELD OR THE BREAKOUT BOARD.
// SEE RELEVANT COMMENTS IN Adafruit_TFTLCD.h FOR SETUP.
// Modified for SPFD5408 Library by Joao Lopes
// Version 0.9.2 - Rotation for Mega and screen initial
// *** SPFD5408 change -- Begin
#include <SPFD5408_Adafruit_GFX.h> // Core graphics library
#include <SPFD5408_Adafruit_TFTLCD.h> // Hardware-specific library
#include <SPFD5408_TouchScreen.h>
// *** SPFD5408 change -- End
// The control pins for the LCD can be assigned to any digital or
// analog pins...but we'll use the analog pins as this allows us to
// double up the pins with the touch screen (see the TFT paint example).
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_RS A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
// When using the BREAKOUT BOARD only, use these 8 data lines to the LCD:
// For the Arduino Uno, Duemilanove, Diecimila, etc.:
// D0 connects to digital pin 8 (Notice these are
// D1 connects to digital pin 9 NOT in order!)
// D2 connects to digital pin 2
// D3 connects to digital pin 3
// D4 connects to digital pin 4
// D5 connects to digital pin 5
// D6 connects to digital pin 6
// D7 connects to digital pin 7
// For the Arduino Mega, use digital pins 22 through 29
// (on the 2-row header at the end of the board).
// Assign human-readable names to some common 16-bit color values:
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
//Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
Adafruit_TFTLCD tft(LCD_CS, LCD_RS, LCD_WR, LCD_RD, LCD_RESET);
// If using the shield, all control and data lines are fixed, and
// a simpler declaration can optionally be used:
// Adafruit_TFTLCD tft;
void setup()
{
Ez meg nem:
// UTFT_ViewFont (C)2013 Henning Karlsen
//
// This program is a demo of the included fonts.
//
// This demo was made for modules with a screen resolution
// of 320x240 pixels.
//
// This program requires the UTFT library.
//
#include <UTFT.h>
// Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];
UTFT myGLCD(SPFD5408A,17,16,15,14); // Remember to change the model parameter to suit your display module!
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_RS A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
UTFT tft(LCD_CS, LCD_RS, LCD_WR, LCD_RD, LCD_RESET);
void setup()
{
(A setup és loop részeket már nem másoltam be.)
Kombináld a ketőtt:
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_RS A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
//UTFT::UTFT(byte model, int RS, int WR,int CS, int RST, int SER)
UTFT myGLCD(SPFD5408A,LCD_RS,LCD_WR,LCD_CS,LCD_RESET); // Remember to change the model parameter to suit your display module!
Sziasztok!
Ez lenne a feladatom de elakadtam:
2 digites 7 szegmenses kijelzővel megvalósított időzítő egy beállított értéktől számol vissza 0-ig, 0-nál húz egy relét ami majd egy zárat fog oldani. Érték beállítása 2 nyomógombbal történik.
Leírtam nagyjából az elvet:
0)tápfesz rákapcsolásakor, relékimenet alacsony szinten.
1)számláló értéke alapból 00
2)érték beállítása fel/le gombbal, gyors léptetés felfelé és lefelé (egyelőre csak az 1.digit állítható), érték beállítása után fel/le gomb egyszerre nyomására elindul a visszaszámlálás, közben fel/le gombot nem figyeli, 00-ig.
3) 00 elérésekor relékimenet magas szintre vált, addig amíg újabb számlálás nem kezdődik (vissza a 1-es pontra)
Találtam neten egy 2digites felfelé számlálót, ennek a programját használtam fel az enyémhez. Ami még ugyan nagyon kezdeti! állapotban van, de már működik egészen addig amíg belép a számlálás ciklusba, de a számlálás nem indul el. Azzal a millis for ciklussal lehet baj mert az elapsed mindig 0,
A program ez lenne: Eredeti program meg ez: Bővebben: Link
#define A 13
#define B 12
#define C 11
#define D 10
#define E 9
#define F 8
#define G 7
// digit engedélyezés
#define CA1 3
#define CA2 2
int rele = 6;
int fel = 5;
int le = 4;
int digit1 = 0;
int digit2 = 0;
const int szegmensek[7] = { A, B, C, D, E, F, G };
// Szegmensek amelyek számokat alkotnak
const byte szamok[10] = { 0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001, 0b0010010,
0b0000010, 0b1111000, 0b0000000, 0b0010000
};
void setup() {
pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(F, OUTPUT);
pinMode(G, OUTPUT);
pinMode(CA1, OUTPUT);
pinMode(CA2, OUTPUT);
// pinMode(rele, OUTPUT);
pinMode(fel, INPUT);
pinMode(le, INPUT);
Serial.begin (9600);
}
void loop() {
meg:
if (digitalRead(5) == 0 && digitalRead(4) != 0)
delay (60);
if (digitalRead(5) == 0 && digitalRead(4) != 0) {
if (digit1 < 9) {
digit1++;
}
}
if (digitalRead(4) == 0 && digitalRead(5) != 0)
delay (60);
if (digitalRead(4) == 0 && digitalRead(5) != 0) {
if (digit1 > 0) {
digit1--;
}
}
digit1Be(szamok[digit1]);
delay(5);
digit2Be(szamok[digit2]);
delay(5);
if (digitalRead(4) == 0 && digitalRead(5) == 0)
delay(30);
if (digitalRead(4) == 0 && digitalRead(5) == 0) {
goto szamlalas;
} else {
goto meg;
}
szamlalas:
for (digit1; digit1 >= 0; digit1--) {
for (digit2; digit2 >= 0; digit2--) {
unsigned long startTime = millis();
for (unsigned long elapsed = 0; elapsed < 1000; millis() - startTime) {
digit1Be(szamok[digit1]);
delay(5);
digit2Be(szamok[digit2]);
delay(5);
goto szamlalas;
}
}
}
}
void digit1Be(byte szam) {
digitalWrite(CA1, LOW);
digitalWrite(CA2, HIGH);
szegmensekBe(szam);
}
void digit2Be(byte szam) {
digitalWrite(CA1, HIGH);
digitalWrite(CA2, LOW);
szegmensekBe(szam);
}
void szegmensekBe(byte szam) {
for (int i = 0; i < 7; i++) {
int bit = bitRead(szam, i);
digitalWrite(szegmensek[i], bit);
}
}
második for ciklus
a 72. sorban : goto szamlalas; vissza ugrasz az első forciklus elé???
ennek a ciklusnak, így sosem lessz vége!!!
(#) |
mps hozzászólása |
Máj 16, 2016 |
|
/ |
|
|
Sziasztok! Kérek egy kis segítséget, mert nagyon elakadtam. Nem tudok egy strinhez egy chart hozzáfűzni. A kódot mellékelem, valamint azt is ami visszajön a soros porton. Arduimoval nem foglalkoztam még, de egy cseppet idegesít, hogy ez nem sikerül, valamit nagyon elnézek
A jelszó mentésénél van a gond, switch "p" ágában.
Előre is köszi a segítséget! A hozzászólás módosítva: Máj 16, 2016
Segíts ! Magyarázd el neki hogy küldje el a nyomást is ne csak a hőmérsé G letet és akkor jó lesz:
sendRC(temp2*10+key4);
...........................................;
Én feladom... se eleje, se vége a mondatoknak. Azt sem olvassa el amit kérdez nem hogy a választ. Így hogy segítsen az ember? Ott a válasz ha elolvassa és értelmezi már rég működik a dolog. De nem....
Hát én ha berosálok, akkor se fogok rájönni. Nézem nézem, de nem látom amit kellene...
Így próbáltam:
UTFT myGLCD(SPFD5408A,A3,A2,A1,A0,A4); // Remember to change the model parameter to suit your display module!
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_RS A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
UTFT tft(LCD_CS, LCD_RS, LCD_WR, LCD_RD, LCD_RESET);
void setup()
{
Nem jól!
itt rossz helyen van:
//UTFT myGLCD(SPFD5408A,A3,A2,A1,A0,A4); // Remember to change the model parameter to suit your display module!
// elnevezted a pin eket:
#define LCD_CS A3 // Chip Select goes to Analog 3
#define LCD_RS A2 // Command/Data goes to Analog 2
#define LCD_WR A1 // LCD Write goes to Analog 1
#define LCD_RD A0 // LCD Read goes to Analog 0
#define LCD_RESET A4 // Can alternately just connect to Arduino's reset pin
// UTFT tft(LCD_CS, LCD_RS, LCD_WR, LCD_RD, LCD_RESET); ez nem kel!
// Akkor már használd is a neveket! ez kel:
UTFT myGLCD(SPFD5408A,LCD_RS,LCD_WR,LCD_CS,LCD_RESET); // Ez a libb igy definiálta a fügvényt és a vezérlő pinek sorrendjét.
void setup()
// az LCD_RD nem használják, ezért itt állítsuk fix H szintre a kimenetet:
A hozzászólás módosítva: Máj 16, 2016
Az nem gond attól számlálnia kéne, nem? A programot nem folytattam amíg ez a számlálás rész nem működik, lesz benne egy if ami figyeli hogy mindkét digit 0-e és ha igen akkor egy gotoval ki ugrik a "meg" pontra.
Nem is csoda, mert az elapsed változót sehol sem növeled. Egyébként lebeszélnélek a goto utasítás használatáról, a modern strukturált programozás alapelvei közül nagyon kimutat.
Szerintem te nem gondoltad át ezt a válaszodat sem!
Meg a feladatodat sem!
Ide egyébként jobb lenne egy hátúl tesztelő ciklust szervezni.
Bővebben: Link
magyarázatt: = ökörség az egész ciklus szervezés! A hozzászólás módosítva: Máj 16, 2016
Én igy képzelem:
pass="";
phossz=EEPROM.read(32);
for (i=12; i<(phossz+12); i++){
pass += EEPROM.read(i); // vagy:
//pass += (String)EEPROM.read(i);
}
Serial.println(pass);
Az adó kodban benne van....
sendRC(Press+key3);
vevönél a kiolvasás is!
vevö oldalon(soros porton nincs mért érték)
csak ez van fixen 2340.00Pa
hömérséglet érték váltáson szintén csiszolni kell 0.0023.5 tizedest arébb vinni de az átküldöt hömérséglet mérés az frissül is!
igy küldve nyomás értékböl pár tizedes értékig megjelenik 2340.89Pa de ez kelene 100089Pa valos!
adó
sendRC(Press);
vevö
if (receivedCode && 999>receivedCode) Press=(float)(receivedCode)/100; A hozzászólás módosítva: Máj 16, 2016
Az a furcsa, hogy nálam ez működik. Csak arra tudok tippelni, hogy véletlenül nem olyan String könyvtárat használsz-e, amiben a += operátor nincs túlterhelve.
Egyébként függvényimplementációt header fájlba írni, és pláne a kód közepén include-olni elég rossz gyakorlat. Bővebben: Link
Köszönöm szépen a türelmedet, és a jószándékot, de ez ma nekem nem fog összejönni...
Jólvan na azért nem kell lehurrogni, mint láthatjátok eléggé kezdő vagyok programozás terén.
Hátul tesztelős ciklust hova illesztened?
Köszi! Kipróbáltam. Ez lett az egy db e betűből: €g. A második az lefagy wdt resettel jön vissza Lassan mindent kimerítek, letárolni jól tárolja, de vissza már nem, addig jó, hogy a típuskonverziókat megcsinálja, de a hozzáadásba belebukok.
Pedig szokott sikerülni, igaz más környezetben. Már azt sem tudom követni miket próbáltam, de talán a mutatókat még nem.
A .h nem tudom honnan jött... Ez csak egy próba rész, a véglegesben nyilván nem így lesz, hanem normálisan struktúrálva, inc-el, stb.
A string könyvtár szerintem az alap, már ami benne van, nem igazán ismerem az arduinot.
for (digit1; digit1 >= 0; digit1--) {
for (digit2; digit2 >= 0; digit2--) {
unsigned long startTime = millis();
//for (unsigned long elapsed = 0; elapsed < 1000; millis() - startTime) {
do{
digit1Be(szamok[digit1]);
delay(5);
digit2Be(szamok[digit2]);
delay(5);
//if(?) goto szamlalas;
elapsed = millis() - startTime);
} while (elapsed < 1000);
}
}
Nem egy szép megoldás, de működik:
...
phossz=EEPROM.read(32); //ez a string hossza
for (i=12; i<(phossz+12); i++){
egybyte=EEPROM.read(i);
karakter=egybyte;
pass[i-12]=karakter;
}
pass[phossz]='\0';
...
Ha hiányzik belőle a "karakter=egybyte;" akkor szintén nem jó. A hozzászólás módosítva: Máj 16, 2016
(#) |
eadx hozzászólása |
Máj 17, 2016 |
|
/ |
|
|
Üdv!
A dobozolásnál tartottam amikor sikerült a dugdosós kábeleket "sima" vezetékekre cserélni. Forrasztás után a szerkezet össze vissza megy. A vezetékkel lehet a baj? Mire kell figyelnem? A tápellátás ugyan az maradt, mint mikor jól ment csak a vezetékek kerültek cserére.
Igazat adok, ez még a kezdeti asm-es pices tanulói korszakomból maradt rajtam, milyen elegánsabb megoldást javasolsz. kapu48 köszi a javaslatot megpróbálom majd.
Úgy látszik senkinek nem volt ezzel még baja. Valószinűleg akkor csak a frontváltozás okozhatja.
Ne haragudj. Kicserélted a vezetéket, előtte jó volt, most nem. Egyértelmű, hogy félrekötöttél valamit... Nem? Árnyékolt vezeték kell oda, ahol adat megy. Ennyi...
Arduino kérdés: melyik a jó megoldás: Atmega16u2, FT-232, CH340G.
Nehéz kérdés, pláne, hogy még vagy 23 IC-t fel lehet sorolni.
Személyes tapasztalat:
- megbízható ebay-es FT-232-m nem volt, elajándékozgattam őket. 10-szer kellett bedugni, hogy egyszer csatlakozzon. Sem Windows, sem Linux alatt nem ment nekem. Nagyon rossz tapasztalat.
- az Atmega16u2 egy kicsit stabilabb, de Linux alatt néha elveszti a kapcsolatot. A ttyACM0 kissé bugosra sikeredett, Linux alatt nem javaslom, a Windowsról fogalmam sincs.
- a CH340g-vel nekem nem volt bajom, persze valami kínai drivert fel kell rakni Windows alá, úgy ment.
De épp most dugtam fel a CP2102-t, Windows 7 felismeri, telepíti a drivert COM13 megjelenik. Linux alatt még telepíteni sem kell, csak megy mint atom.
De a PL2303-mal sem volt bajom Linux-on, de Windows alatt lehet, hogy driver kell neki. A hozzászólás módosítva: Máj 17, 2016
Most már kíváncsi vagyok, hogy az union-os változatom beválik e?
#include <EEPROM.h>
typedef union u_PASS{
char Spass[21];
uint8_t Cpass[21];
};
u_PASS pass;
uint8_t phossz = 12, i;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
phossz=EEPROM.read(32); //ez a string hossza
for (i=12; i<(phossz+12); i++){
pass.Cpass[i-12]=EEPROM.read(i);
}
pass.Cpass[i-12]= 0;
Serial.println(pass.Spass);
}
void loop() {
// put your main code here, to run repeatedly:
}
A hozzászólás módosítva: Máj 18, 2016
Tudom, illetleség, de nem lenne egyszerűbb az strcat string műveletekhez?
char str[40];
str[0] = 0; // üres string
strcat_P(str, PSTR("Valami:")); // szöveg hozzáadása flash memóriából
char num[10];
sprintf(num, "%d", 247);
strcat(str, num); // szám hozzáadása
char chr[2];
chr[0] = 's'; // ez egy karakter
chr[1] = 0; // záró nulla
strcat(str, chr);
A hozzászólás módosítva: Máj 18, 2016
Legalább 5 db olyan E-bayről beszerzett eszközöm van (nevesebb noname gyártóktól ), amelyikben FT232 ketyeg, s egyikkel sem volt gondom eddig (Meduino nan0, ICStation Arduino nano, FTDI kábel és panel). Persze, belefuthat az ember hamisítványokba, s akkor kész a baj.
A PL2303 esetén hasonló a helyzet, ott is belefuthat az ember hamisítványokba, amelyek csak a régebbi driverrel mennek (Windows alatt). A legszebb az, hogy volt olyan Magyarországon (számítástechnikai boltban) vásárolt PL2303- RS232 kábelem, ami pont a mellé adott gyári meghajtóval nem működött, csak az Internetről beszerzett meghajtóval. A hozzászólás módosítva: Máj 18, 2016
Én 3 FTDI-t rendeltem Ebay-en, sem a notebook-kal, sem az asztali géppel nem ment egyik sem.
A probléma mindig ugyanaz: "unable to enumerate usb device".
Kihúzod és újra bedugod: 10% valószínűséggel csatlakozik. Csatlakozás után már megy, az indulásnál produkálja a problémát.
Linuxon látod a hibát, Windows-on nem, de ott sem megy. A szakértők azt javasolták, hogy minél rövidebb, megfelelő USB kábelt kell használni ferrit gyűrűvel, ahol nincsen visszaverődés. Nekem az a személyes véleményem, hogy nem kell FTDI-t használni és a probléma megoldódik.
A hozzászólás módosítva: Máj 18, 2016
|
|