Fórum témák
- • Retro számítógépek
- • Opel Astra elektromos hibák
- • Elfogadnám, ha ingyen elvihető
- • Gáz fogyasztás monitorozása
- • Eredményjelző
- • Mosógép vezérlők és általános problémáik
- • Audiofil, High End Audio
- • Hűtőgép kompresszor
- • Villanyszerelés
- • Transzformátor készítés, méretezés
- • Analóg oszcilloszkóp javítása
- • Boombox javítás
- • Dióda helyettesítés
- • Kapcsolási rajzot keresek
- • Vezetéknélküli termosztát
- • Oszcilloszkóp, avagy hogyan kell használni?
- • Kapcsolóüzemű táp 230V-ról
- • Rádióamatőrök topikja
- • Vicces - mókás történetek
- • Hűtőgép probléma
- • A műhely (bemutató topik, ahol az alkotások készülnek)
- • Számítógép hiba, de mi a probléma?
- • Arduino
- • Felajánlás, azaz ingyen elvihető
- • Rádió áthangolása, OIRT - CCIR konverter
- • Kazettás magnó (deck) javítása
- • Kombikazán működési hiba
- • Klíma szervizelés, javítás
- • Klíma beszerelése, fűtés-hűtés házilag
- • Tápegységgel kapcsolatos kérdések
- • Fejhallgató erősítő
- • Labortáp javítás
- • MOSFET-ek
- • Sprint-Layout NYÁK-tervező
- • Tápegység
- • Androidos okos telefonok
- • Tervezzünk nyákot EasyEDA-val
- • Hegesztő inverter javítás
- • Videomagnó problémák
- • Ellenállás
- • Szobatermosztát bekötése
- • HESTORE.hu
- • Multiméter - miért, milyet?
- • Érdekességek
- • Villanymotor bekötése
- • Menetszámolós tekercselőgép házilag
- • Leválasztó transzformátor
- • Szigetelésvizsgáló
- • USB 3.2 HUB modul
- • Kamerás megfigyelőrendszer
- • Tranzisztorok helyettesítése
- • Borhűtő vezérlő panel
- • CNC építése házi alkatrészekből az alapoktól
- • Sütő javítás
- • Kondenzátor
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
2 icvel 6 leddel semmi anomália (ez próbaüzem).
Emeli, és csökkenti a led fényerejét.
Szerintem jó.
Sziasztok, az alábbi kóddal kapcsolatban kérnék segítséget:
- a lényeg működik, első sorban megjelenik az adott állomás neve, a második sorban pedig "meta" adatok. Amit szeretnék változtatni az a második sor megjelenítése, jelenleg nagyon gyorsan "scroll-ozik", ezt szeretném lassítani, de sajnos eddig akármelyik delay-t változtattam az eredmény maradt ugyanaz. Valaki tudna ebben segíteni?
/*
Karadio IIC LCD 16x2.ino
Edited by Alexander - yo2ldk - 2019.
Arduino Board IIC LCD
A4 sda
A5 scl
*/
// include the library code:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//#define I2C_ADDR 0x27 // <<----- Add your address here. Find it from I2C Scanner
//#define BACKLIGHT_PIN 3
//#define En_pin 2
//#define Rw_pin 1
//#define Rs_pin 0
//#define D4_pin 4
//#define D5_pin 5
//#define D6_pin 6
//#define D7_pin 7
//int n = 1;
//LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address, if it's not working try 0x27.
#define version 3.0
#include <EEPROM.h>
const int EEaddr = 0; // EEPROM address for storing WPM
const int EEaddr1 = 2; // EEPROM address for LCD address
const int EEaddrIp = 10; // EEPROM address for the IP
// Character array pointers
char msg[] = {"Karadio LCD"}; //
char msg1[] = {"(c) KaraWin"}; //
char blank[] = {" "};
char msg2[] = {" Internet Radio "};
// Karadio specific data
#define BUFLEN 200
#define LINES 2
char line[BUFLEN]; // receive buffer
char station[BUFLEN]; //received station
char title[BUFLEN]; // received title
char nameset[BUFLEN];
char* lline[LINES] ; // array of ptr of n lines
int iline[LINES] ; //array of index for scrolling
byte tline[LINES] ;
char* ici;
char* ici2;
unsigned index = 0;
unsigned loopcount = 0;
unsigned scrl = 0;
int x = 16; //Width
char temp;
////////////////////////////////////////
// Clear all buffers and indexes
void clearAll()
{
title[0] = 0;
station[0] = 0;
for (int i = 0; i < LINES; i++)
{
lline[i] = NULL; iline[i] = 0; tline[i] = 0;
lcd.setCursor(0, i);
lcd.print(blank);
}
}
////////////////////////////////////////
void cleartitle()
{
title[0] = 0;
for (int i = 1 ; i < LINES; i++) // clear lines
{
lline[i] = NULL;
iline[i] = 0;
tline[i] = 0;
lcd.setCursor(0, i);
lcd.print(blank);
}
draw();
}
////////////////////////////////////////
void eepromReadStr(int addr, char* str)
{
byte rd;
do {
rd = EEPROM.read(addr++);
*str = rd;
// Serial.println(str[0],16);
str++;
} while (( rd != 0) && ( rd != 0xFF));
*str = 0;
}
////////////////////////////////////////
void eepromWriteStr(int addr, char* str)
{
byte rd;
do {
EEPROM.write( addr++, *str);
rd = *str;
str++;
} while (( rd != 0) && ( rd != 0xFF));
EEPROM.write( addr, 0);
}
////////////////////////////////////////
// parse the karadio received line and do the job
void parse(char* line)
{
int mul;
removeUtf8((byte*)line);
// Serial.println(line);
////// Meta title
if ((ici=strstr(line,"META#: ")) != NULL)
{
cleartitle();
strcpy(title,ici+7);
lline[1] = title;
draw();
} else
////// ICY0 station name
if ((ici=strstr(line,"ICY0#: ")) != NULL)
{
int len;
clearAll();
if (strlen(ici+7) == 0) strcpy (station,nameset);
else strcpy(station,ici+7);
lline[0] = station;
draw();
} else
////// STOPPED
if ((ici=strstr(line,"STOPPED")) != NULL)
{
cleartitle();
strcpy(title,"STOPPED");
lline[1] = title;
draw();
}
/////// Station Ip
else
if ((ici=strstr(line,"Station Ip: ")) != NULL)
{
char oip[20];
// Serial.println(line);
eepromReadStr(EEaddrIp, oip);
if ( strcmp(oip,ici+12) != 0)
eepromWriteStr(EEaddrIp,ici+12 );
}
}
////////////////////////////////////////
//Setup all things, check for contrast adjust and show initial page.
void setup(void) {
char oip[20];
Serial.begin(115200);
while (!Serial) { ;}
lcd.begin(16,2);
pinMode(13, OUTPUT); // led
lcd.clear();
lcd.noAutoscroll() ;
lcd.print(msg);
lcd.setCursor(0,1);
lcd.print(msg1);
delay(3000);
clearAll();
eepromReadStr(EEaddrIp, oip);
lline[0] = (char*)"IP:";
lline[1] = oip;
draw();
}
////////////////////////////////////////
void serial()
{
char temp;
while ((temp = Serial.read()) != -1)
{
switch (temp)
{
case '\n' : if (index == 0) break;
case '\r' :
line[index] = 0; // end of string
index = 0;
parse(line);
break;
default : // put the received char in line
if (index > BUFLEN - 1) break; // small memory so small buffer
line[index++] = temp;
}
}
}
////////////////////////////////////////
// draw all lines
void draw()
{
lcd.clear();
for (int i = 0;i < LINES;i++)
//for (int i = LINES - 1; i >= 0; i--)
{
serial();
lcd.setCursor(0,i);
if ((lline[i] != NULL)) lcd.print(lline[i] + iline[i]);
delay(1500);
}
}
////////////////////////////////////////
// scroll each line
void scroll()
{
unsigned len;
for (int i = 0;i < LINES;i++)
{
if (tline[i]>0)
{
if (tline[i] == 4) iline[i]= 0;
tline[i]--;
}
else
{
len = strlen(lline[i]+(iline[i]));
if (len > x) iline[i]++;
else
{tline[i] = 6;}
}
}
draw();
}
////////////////////////////////////////
void loop(void) {
serial();
if (loopcount++ == 0x3fff)
{
loopcount = 0;
if (++scrl%6 == 0) digitalWrite(13,HIGH);
scroll();
digitalWrite(13,LOW);
}
}
void removeUtf8(byte *characters)
{
int index = 0;
while (characters[index])
{
if ((characters[index] >= 0xc2)&&(characters[index] <= 0xc3)) // only 0 to FF ascii char
{
// Serial.println((characters[index]));
characters[index+1] = ((characters[index]<<6)&0xFF) | (characters[index+1] & 0x3F);
int sind = index+1;
while (characters[sind]) { characters[sind-1] = characters[sind];sind++;}
characters[sind-1] = 0;
}
index++;
}
}
Biztosan nem a sima adatlapjára gondolsz, amiben egy fia elektromos paraméter nincs benne, csak a programozásáról szól...?!!
Ne a delay-t változtasd, mert az csak a megjelenítés gyakoriságát állítja! Helyette a loop-ban található részbe kell piszkálni, ami a scroll-t indítja! Ez a 249. sor vége. A 0x3fff-et növeld meg mondjuk 0x5fff-re vagy 0xafff-re, és nézd mi történik!
Ezer köszönet, működik
Otthon van valaki az ArduinoJson könyvvtárban? 2D tömböt akarok bemásolni, de nem tudok neki kulcsot adni. Magyarul van egy 2D tömböm, amit JSONizálni akarok úgy hogy adok neki egy kulcsot is. Vagyis van egy ilyenem:
És mondjuk a kulcs legyen Xtomb.
Tehát a végeredmnynek valahogy így kellene kinéznie ha üres a tömb.
{"Xtomb" : [0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]}
Tudja valaki ezt hogy tudom létrehozni? Visszafelé működik, tehát ha ez a bejövő JSON string akkor ebből ki tudom másolni magát a tömböt, de odafelé nem megy.
Helló!
Kapunk egy hibát fordításkor no matching function for call to 'HardwareSerial::begin(long int, int, bool)'!
Szeretnék maradni a hadveres soros portnál!
#include <AESLib.h>
byte key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
char data3[16];
void setup() {
Serial.begin(115200);
}
void loop() {
if (Serial.available()) {
Serial.read(data3, sizeof(data3));
aes128_dec_single(key, data3);
}
Serial.println("Decrypted");
for(int i=0; i<16; i++) {
Serial.print(data3[i]);
}
}
Próbáld ki úgy, hogy kiveszed az első sort az include-dal, meg a 19. sorból az aes128... utasítást! Nekem van egy tippem hogy az aes lib kavar össze valamit. Csak magában a Serial működik? Így mit mutat?
aes128 lib mért hagynám ki ezt akarom használni!
Szurd be amit leírtál "kódból" úgy jobban látni! A hozzászólás módosítva: Okt 16, 2020
Azért kéne kihagyni, mert jó lenne tudni hogy honnan ered a hiba. Ha több helyről származhat és mindent benne hagysz, akkor honnan tudod meg hogy mi okozza? Majd ha már a lib nélkül jól megy, akkor megpróbáljuk összemasszírozni őket! De addig csak vakarjuk a fejünket a sötétben.
Idézet: „Szurd be amit leírtál "kódból" úgy jobban látni!”
Komolyan nem értem hogy mi volt ebben a nehéz! Mondtam hogy az első sor. Meg mondtam hogy a 19. sor. Egyetlen utasítás van benne!
DE tessék:
aes128_dec_single(key, data3);
Sziasztok. Szeretnék egy PROM-ot kiolvasni arduino segítségével, majd a "beolvasott tartalmat" kilistázni soros monitoron hexa adatként. Ebben kérném segítségeteket.
Próbálkoztam saját "programmal", de mivel az nem vált be így hozzátok fordulok.
A kiolvasandó PROM egy TBP18SA030N PROM , összesen 256 bit tartalommal.
Ezt kellene az arduino segítségével kipörgetni, majd a PROM-ból kapott kódot hexává alakítani és kiírni a soros monitor felületén.
Összejöhet ez arduino segítségével vagy én baltáztam el valamit?
Nem látom be hogy miért ne tudná kezelni! Mutasd eddig hogyan próbáltad! Mire mit kötöttél, és milyen kóddal próbálkoztál? Nem tűnik bonyolult feladatnak! A hozzászólás módosítva: Okt 16, 2020
A bekötési "rajz" így néz ki (a prom mellé fel van írva melyik láb hova volt kötve).
A kódot sikerült kukáznom annyira felmérgelt, így most próbálom visszagépelni arra amire emlékszem belőle.
A kimenetek 6-7 es lábát ha jól látom rossz helyre kötötted. Ha jól nézem a többi a portc hez tartozik, de az a6 és a7 ha minden igaz csak analóg bemenetként használható.
Na sikerült úgy ledarálnom a kódot hogy vissza se tudom állítani.
Akkor faragok egy másikat és felteszem ide....
Tudtommal bármire lehet használni, de most már felmerül a kérdés, hogy ez milyen lap? Én egy atmega8-ból indultam ki (vagy 328 mindegy). Az van rajta?
Szerk: Mármint szikorapétertől kérdem nyilván A hozzászólás módosítva: Okt 16, 2020
Ennek neve lgt8f328p olyan mint az arduino nano 328P-vel szerelve csak ez valami csoda kínai utánzata, elvileg teljes értékben kompatibilis helyette.
Most már bosszant, utána nézek! A rajz tényleg erre utal..
Úgy tűnik igazad van! De érdekes, az ember mindig tanul valamit!
A fentiek miatt akkor javaslom megcserélni a kimeneteket a bemenetekkel! Tehát az A0-A5 menjen az A0-A4-re és a _G -re. A kimenetek meg mehetnek a D2-től sorba!
Lássuk a kódot!
Amúgy annyi lesz a program, hogy sorra megcímezzük az A0-A4 segítségével, miközben a D2-D10 hozza az értékeket. Ahogy vesszük, már toljuk is ki a serial porton. Ha minden jól megy, akkor gyorsan megleszünk!
Én sem tudtam, a lábkiosztást nézegetve tűnt fel. Nem szeretem az arduino saját láb címkézését, szerintem a port írást/olvasást jobb regiszterszinten megoldani. Mindig megnézem hogy az Ax és Dx lábak valójában mit takarnak, hova vannak kötve. A konkrét feladatot úgy csinálnám hogy egy for ciklusban végigpörgetnék egy szabad portot a címtartományban, egy másik szabad portot bemenetnek állítva pedig egyszerűen minden lépésben egy tömbbe írnám a bejövő adatot, vagy akár a tömböt elhagyva azonnal hexává alakítva ki is lehetne lőni szépen sorban uartra.
A fő problémám most az hogy valamiért ha rádugom a gépre nem látja az említett eszközt. Eddig gond nélkül ment. Ezen holtek illesztő chip van, se most csak megy a bele utoljára írt kód, viszont a gép nem látja, nem is csippan rá hogy rádugtam egy eszközt.
Gyűlnek a felhők.. Akkor előbb ezzel kellene elszámolni!
Azt írja a gép hogy nincs meg a driver, ugyhogy most kotorászás, driver keresés.
|
|