Fórum témák
- • 32A 40-re bővítése?
- • Műhelyünk felszerelése, szerszámai
- • Multiméter - miért, milyet?
- • Elfogadnám, ha ingyen elvihető
- • Vibrációs búvárszivattyú
- • Kapcsolóüzemű táp 230V-ról
- • Gitárerősítő
- • Erősítő építése elejétől a végéig
- • Napelem alkalmazása a lakás energia ellátásában
- • Arduino relé modul, elnémul az out_pin
- • Klíma szervizelés, javítás
- • Computherm q7rf kapcsolási rajz
- • Kávéfőzőgép hiba
- • LCD TV probléma
- • Ventilátoros hűtés
- • Milyen csatlakozó ez?
- • Elektronikus szulfátoldó (Akku aktivátor)
- • Elektroncső
- • Felajánlás, azaz ingyen elvihető
- • Hozom-viszem, veszem-küldöm!
- • Gyors hőmérséklet mérés tapintó érzékelővel ellátott műszerrel
- • Dobozolási technikák, műszerdobozok
- • Hangsugárzó építés, javítás - miértek, hogyanok
- • Erősítő mindig és mindig
- • KETTLER töltő
- • Analóg oszcilloszkóp javítása
- • Bojler javítása, kérdések
- • Audiofil, High End Audio
- • Klíma beszerelése, fűtés-hűtés házilag
- • Teljesítmény -LED, powerLED (pl. Cree, Luxeon) vezérlése
- • Varrógép elektronika
- • WiFi antenna készítés
- • Mosógép vezérlők és általános problémáik
- • Transzformátor készítés, méretezés
- • Túlfeszültségvédő
- • SONY TA-F 590ES MOSFET végfok átalakítása
- • Kapcsolóüzemű tápegység
- • Számítógép hiba, de mi a probléma?
- • Rendelés külföldről (eBay - Paypal)
- • Vakondriasztó
- • Indukciós főzőlap javítása
- • Gitár torzító / Effekt / Erősítő / Pickup
- • Tápegység
- • Oszcilloszkóp vétel, mit gondoltok?
- • Be-/kikapcsoló nyomógombbal
- • Hűtőgép probléma
- • XBOX kiegészítők, javítások átalakítások
- • Kazettás magnó (deck) javítása
- • Villanyszerelés
- • Leválasztó transzformátor
- • Kombinált gáztűzhely
- • Li-Po - Li-ion akkumulátor és töltője
- • Kompresszor hiba
- • Keverőpult építése, javítása
- • Oszcilloszkóp, avagy hogyan kell használni?
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Köszi a gyors választ
Alakul
#define numframes 4
uint8_t leds[10] =
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
uint8_t frame[numframes][10] =
{ {1, 1, 1, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
};
void setup()
{
for (int i = 0; i < 11; i++)
pinMode(leds[i], OUTPUT);
}
void loop()
{
for (int x = 0; x < (numframes); x++)
{
for (int i = 0; i < 10; i++)
{
digitalWrite(leds[i], frame[x][i]);
}
delay(1000);
}
}
A kimenetek állapotait tárolhatjuk 1-1 biten is:
#define N_LED 10
#define NUMFRAMES 16
uint8_t leds[10] =
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
/*
uint8_t frame[NUMFRAMES][10] =
{ {1, 1, 1, 1, 1, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 0, 0, 0, 1, 1, 1, 1, 1},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
};
*/
unsigned frame_w[NUMFRAMES]=
{
0B0000000100100100,
0B0000001001001001,
0B0000000010010010,
0B0000000101010000,
0B0000001110000000,
0B0000001100000000,
0B0000001000000000,
0B0000000000000000,
0B0000000000000001,
0B0000000000000010,
0B0000000000000100,
0B0000000000001001,
0B0000000000010010,
0B0000000000100100,
0B0000000001001001,
0B0000000010010010
};
void setup()
{
for (int i = 0; i < N_LED; i++)
pinMode(leds[i], OUTPUT);
}
void loop()
{
for (int x = 0; x < (NUMFRAMES); x++)
{
for (int i = 0; i < N_LED; i++)
{
digitalWrite(leds[i], bitRead(frame_w[x],i ) );
}
delay(1000);
}
}
Sziasztok!
Ismét van egy cifrább kérdésem:
Az arduino (uno, nano) tud egyszerre kezelni egy encodert és egy oledes kijelzőt(128*64 I2C)? Mert nekem nem nagyon akar összejönni. A tesztem gyakorlatilag annyi hogy az encoderrel léptetek egy számlálót és ennek az értékét kiíratom az oledre. A gond az hogy sok időt vesz igénybe a kijelzőre való folyamatos kiírás (frissítés) és így az encoder gyakorlatilag összevissza számol (le marad a proci az élváltásokról). Próbáltam azt is hogy x időnként firssítem csak a kijelzőt, mondjuk 300ms, itt még nagyjából jól számol az encoder, csak olyan darabos a kiírás és ez sajnos nem nagyon fogadható el, nagyjából realtime-nak kéne lennie. A célom egy menürendszer kialakítása lenne (ami egy sima karakteres LCD-n már működött) ide-oda lapozgatás értékek bevitele encoderrel stb.
Kevés ehhez a 16MHz, vagy lehet nem jól látom a dolgot?
Ezek jutottak eszembe: megszakítás, más fejlesztő eszköz használata(erősebb vas) pl arduino due (84MHz), SPI oled(?) ?
Be rakom a teszt kódot amin a 300ms-es frissítés van, eléggé szedett-vedett, kétnyelvű, de talán látni a dolgokat.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
/*-------encoder------*/
#define outputA A2
#define outputB A3
int counter = 0;
int aState;
int aLastState;
#define frissites 2 //frissites (ms)
#define nemfrissit 300 // frissitesek közti idő ms-ben
long lastAllapot = 0;
int frissit = HIGH; //frissiteshoz
void setup(){
pinMode (outputA, INPUT);
pinMode (outputB, INPUT);
Serial.begin (9600);
aLastState = digitalRead(outputA);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
}
void loop() {
//frissiteshez
if (frissit == 0 && (millis() - lastAllapot > nemfrissit)) {
frissit = 1;
lastAllapot = millis();
}
if (frissit == 1 && (millis() - lastAllapot > frissites)) {
frissit = 0;
lastAllapot = millis();
}
//Encoder
aState = digitalRead(outputA);
if (aState != aLastState) {
if (digitalRead(outputB) != aState) {
counter ++;
} else {
counter --;
}
// Serial.print("Position: ");
// Serial.println(counter);
}
aLastState = aState;
/*---------------------------------------------------------------------------*/
if (frissit == 1) {
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(40, 0);
display.print("Men");
display.write(129); //ü
display.drawLine(0, 16, 128, 16, WHITE); //vonal bufferelése
display.fillRect(0, 20, 128, 9, WHITE); //kitoltott teglalap
display.setTextSize(1);
display.setTextColor(BLACK); //kitolte miatt invert
display.setCursor(3, 21);
display.print("Menu1");
display.setTextColor(WHITE);
display.setCursor(3, 31);
display.print("Menu2");
display.setCursor(3, 41);
display.print("Position: ");
display.print(counter);
display.display();
}
}
Az encodert interrupt-ra kellene tenni Bővebben: Link és akkor "instant" működik. A kiírást pedig csak akkor amikor szükség ( ertek változáskor ). A hozzászólás módosítva: Jún 15, 2017
Az én logikám szerint. Ez nem kel:
if (frissit == 1 && (millis() - lastAllapot > frissites)) {
frissit = 0;
lastAllapot = millis();
}
Hanem, mikor megtörtént a frissités, akkor nullázod:
if (frissit == 1) {
frissit =0;
...
És nem töröljük az egész LCD-t, hanem csak azt a sort vagy részletett ami változott.
És az encodert Interuptba rakni! A hozzászólás módosítva: Jún 16, 2017
Szerintetek egy sima szám.tech. boltban kapható USB- RS232 átalakítót ráköthetek közvetlenül az Atmega8 Rx-Tx lábaira programozás céljából?
Vagy ha nincs szerencsém és "jófajta" az átalakító, nem csak 0-5 V jelet ad ki?
Kellene még egy szintillesztés, mert az Atmega8 bemenetén max 5 (3,3) VDC lehet, az RS-232 standard meg +/- 12 VDC jelszinttel dolgozik. Kell egy MAX232 szintillesztő, vagy tranyós szintillesztő. E-bay -en találsz USB - TTL átalakítókat ( CH340, CP2102, stb)
Röviden: Nem. A 12 Volt kinyírja a mikrokontrollert.
Megoldás: Veszel USB TTL (Transistor Transistor Logic, vagyis 5 Voltos) soros adaptert. Magyarországon 1500 ft, külföldről 300 ft. B terv: Megveszed a számtech boltban 2-4 ezer között az adaptert. Szétszeded, 2db IC van benne, egy USB TTL és egy RS232 szintillesztő. A kettő között megcspolod az Rx, Tx jelvezetékeket, és kész is vagy.
Sziasztok,
Az alábbi 2 hopeRF modul között mi a külömbség? Melyik a "jobb"? azt jól tudom, hogy az elektronikában olyan nincs, hogy "jobb", mindig feltételeket kell kötni...
Azt megértettem, hogy az eggyik +13dBm-es és a másik +20dBm-es, de melyik hova ajánlottab?
RFM69W-433S:
+13 dBm Power Output Capability
RFM69HW-433S2
+20 dBm - 100 mW Power Output Capability
Nekem csak arra kellene, hogy max. 10m-ig tudjon venni és fogadni és analizálni távírányító jeleket.
A választ előre is köszönöm! A hozzászólás módosítva: Jún 17, 2017
Ezzekkel nem fogsz semmilyen távirányító jelet analizálni. Az RF jelet kell fogni közvetlen, azt lehet analizálni, dekódolni tetszés szerint.
Ezek a modulok beszélgetnek egymással, de a kódolást és a dekódolást maguk végzik el, te csak az információt fogod látni, a konkrét rádióadást nem. Van egy csomó technika arra, hogy RF hullámokon adatot továbbítsunk, a modulok nem ismerik mindegyiket. Lehet, hogy a távirányító olyan frekvenciát használ, amit ezek a modulok észre sem vesznek.
Milyen távirányítóról van szó? Remélhetőleg nem autó és/vagy kapunyitó távirányítók. Igaz, ezekkel a modulokkal ott semmire sem mész. A hozzászólás módosítva: Jún 17, 2017
Idézet: „hogy max. 10m-ig tudjon venni és fogadni és analizálni távírányító jeleket.”
Erre bármilyen 433 MHz-en működő szupregvevő jó.
Bármelyik távirányító vevőoldala hasznosítható.
Kimenetét hangkártyára kötve láthatod a pulzákat, felveheted, analizálhatod.
A terv az lett volna, hogy egy Mercedes kulccsal lehessen irányítani a PowerPointot.
A feladat furán hangzik, de szerintem kivitelezhető volna egy megfelelő vevővel.
A cégnél, ahol dolgozok, ott van egy Zed-Full nevezetü csodamasina, amelyben ha kiválasztom, hogy 433mhz-es Mercedes távirányírányítom van és megnyomok egy gombot a távirányíton, akkor kiírja a kapott kódot, aminek az első 4 bájtja fix, az ötödik bájtja a megnyomott gomb függvényében változik, és a többi ugró bájt.
Nekem elég volna az első 5 bájtból, irányítani a PowerPointot.
Írta azt is, hogy FSK vagy ASK kódolásu jelet vár a távirányítótol.
Ma vagy holnap küldök videót a gépről.
Azért szerettem volna univerzális vevőt, hogy tudjak többfajta távirányítóval is kisérletezni.
Kera_will:Egy ilyenre volna szükségem? A hozzászólás módosítva: Jún 18, 2017
Szia!
Nézegesd az SDRsharp oldalát, sok ötletet meríthetsz belőle. Egy sima párdolláros DVB-t tunerrel működik a történet, csak programoznod kell utána. Viszont a programozás részét akár GNURadio is megoldja. Ha tényleg csak távirányítóként akarod használni ezeket, akkor ez járható út lehet, ámde sokkal egyszerűbb lenne direkt erre a célra kitalált egeret használni (lézerpointerrel, előre-hátra gombbal).
pl igen ezekből csak a receiver része avagy ha ennél részben jobb és ügyesebb vevőt szeretnél az SDR alapú: RTL-SDR
Köszönöm a válaszokat, a kérdést azért tettem fel, mert terveztem egy RFID shieldet és még volt rajta hely bővön egyébnek is.
Ráterveztem az RFM69HW modult, és majd egy másik RFM69HW modullal megprobálom leolvasni, és egy általatok ajánlott SDR vevővel megprobálom tanulmányozni.
Mentek a zöld kezek is!
További szép napot! A hozzászólás módosítva: Jún 19, 2017
(#) |
vyky hozzászólása |
Jún 20, 2017 |
|
/ |
|
|
Sziasztok. Valaki mondja el miért van az ,hogy az lcd nem írja ki a szöveget teljes hosszában?
// include the library code:
#include <LiquidCrystal_SR.h>
#include <Wire.h>
#include <math.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal_SR lcd(7,8,TWO_WIRE);
#define ThermistorPIN 0 // Analog Pin 0
float vcc = 5; // only used for display purposes, if used
// set to the measured Vcc.
float pad = 87400; // balance/pad resistor value, set this to
// the measured resistance of your pad resistor
float thermr = 10000; // thermistor nominal resistance
float Thermistor(int RawADC) {
long Resistance;
float Temp; // Dual-Purpose variable to save space.
Resistance=((1024 * pad / RawADC) - pad);
Temp = log(Resistance); // Saving the Log(resistance) so not to calculate it 4 times later
Temp = 1 / (0.001129148 + (0.000234125 * Temp) + (0.0000000876741 * Temp * Temp * Temp));
Temp = Temp - 273.15; // Convert Kelvin to Celsius
// BEGIN- Remove these lines for the function not to display anything
//Serial.print("ADC: ");
//Serial.print(RawADC);
//Serial.print("/1024"); // Print out RAW ADC Number
//Serial.print(", vcc: ");
//Serial.print(vcc,2);
//Serial.print(", pad: ");
//Serial.print(pad/1000,3);
//Serial.print(" Kohms, Volts: ");
//Serial.print(((RawADC*vcc)/1024.0),3);
//Serial.print(", Resistance: ");
//Serial.print(Resistance);
//Serial.print(" ohms, ");
// END- Remove these lines for the function not to display anything
// Uncomment this line for the function to return Fahrenheit instead.
// Temp = (Temp * 9.0)/ 5.0 + 32.0; // Convert to Fahrenheit
return Temp; // Return the Temperature
}
void setup() {
pinMode(13, OUTPUT);
// Serial.begin(115200);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("Hello Word");
delay(2000);
}
void loop() {
float temp;
temp=Thermistor(analogRead(ThermistorPIN)); // read ADC and convert it to Celsius
Serial.print("Celsius: ");
Serial.print(temp,1); // display Celsius
temp = (temp * 9.0)/ 5.0 + 32.0; // converts to Fahrenheit
// Serial.print(", Fahrenheit: ");
Serial.print(temp,1); // display Fahrenheit
lcd.begin(16,2);
lcd.print("Celsius: ");
lcd.setCursor(0, 1);
lcd.print(temp,1);
if (temp < 50.0) { // SET TEMPERATURE HERE!
digitalWrite(13, HIGH);
}
else {
digitalWrite(13, LOW);
}
delay(1000); // Delay a bit...
}
A Hello Word helyett csak annyi van hogy Hello W.
Nem jövök rá mit hibázok,előre is köszönöm.
Szia!
lcd.setCursor(0, 1);
Ez is kellene a setup-ba a kiírás előtt. Lehet ez megoldja a gondod.
De ez sem biztos, mert nem tudom, hogy így írja-e ki:
' Hello W'
vagy:
'Hello W '
Sajnos nem javított a helyzeten
Hali, lehet olyanféle LCD, ahol az egy 16 karakteres sort kettő nyolcasként kezel. Folytasd a kiírást, és egyszer csak megjelenik.
Az LCD 16 karakteres és 2 soros?
Azaz soronként 16 karakteres? A hozzászólás módosítva: Jún 20, 2017
Nézem, de azt hiszem nem ott lesz a gond, mint eddig gondoltam. Az LCD-t mindenképpen shift regiszterrel akarod megoldani?
Nézegetem a .h fájlt ott nem értek egyelőre mindent, de lehet nem is azt nézem ami neked van. Elküldöd a linket ahonnan letöltötted?
Üdv mindenkinek!
Lenne egy olyan kérdésem, hogy Arduino uno-bol kiveszem a felprogramozott controllert, megfelelően bekötöm, miért nem működik?
Ha látnánk mit nevezel megfelelő bekötésnek, tudnánk válaszolni, így csak találgatni lehetne. A hozzászólás módosítva: Jún 23, 2017
Hát a kvarc az kimaradt, azt gondoltam úgy működik mint az MSP. A többi az rendbe volt.
Lehet kvarc nélkül, belső oszcillátorról használni. Max 8 MHz lehet az órajel. De akkor úgy is kell megírni a programot, és felprogramozni a mikrokontrollert. (Biztosíték bitek, stb.)
Sziasztok!
Én próbálom Ezt az IR vezérlést, csak annyi különbséggel, hogy nekem tsop1738 IR vevőm és egy Orion DVD lejátszó távirányító van, de nem akar működni.
Már többször nekifutottam és mindig ezzel hibaüzenettel leáll: "exit status 1
Hiba a(z) Arduino Nano alaplapra fordításra." pedig betűről betűre megegyezik a kód. Már írtam a videó készítőjének, de még nem kaptam választ.
A kód:
#include<IRremote.h>
IRrecv tsop1738(4);
decode_results result;
const byte buttonPin = 3;
const byte ledPin = 2;
byte btnState = HIGH;
byte btnPreState = HIGH;
byte ledPreState = LOW;
byte ledState = LOW;
long time = 0;
byte debounce = 200;
void setup() {
// put your setup code here, to run once:
tsop1738.enableIRIn();
pinMode(buttonPin,INPUT);
pinMode(ledPin,OUTPUT);
Serial.begin(9600);
Serial.println("Betöltés kész");
}
void loop() {
// put your main code here, to run repeatedly:
btnState = digitalRead(buttonPin);
if(tsop1738.decode(&result))
{
Serial.println(result.value);
tsop1738.resume();
}
if(btnState == HIGH && btnPreState == LOW && millis() - time > debounce)
{
if(ledState == HIGH)
{
ledState = LOW;
Serial.println("LED ki");
}
else
{
ledState = HIGH;
Serial.println("LED be");
}
time = millis();
}
digitalWrite(ledPin,ledState);
btnPreState = btnState;
}
Hogyan tudnám működésre bírni?
Köszönöm előre is. A hozzászólás módosítva: Jún 24, 2017
|
|