Fórum témák
- • Hegesztő inverter javítás
- • Audiofil, High End Audio
- • MyElecParts alkatrész kereső és készlet nyilvántartó
- • Multiméter - miért, milyet?
- • Villanymotor bekötése
- • Erősítő mindig és mindig
- • Kapcsolási rajzot keresek
- • Klíma beszerelése, fűtés-hűtés házilag
- • WLAN router
- • Felajánlás, azaz ingyen elvihető
- • Telefon és LAN hálózat kialakítása
- • Fejhallgató erősítő
- • Leválasztó transzformátor
- • Garázskapu mozgató
- • Érdekességek
- • PIC - Miértek, hogyanok haladóknak
- • Kombikazán működési hiba
- • DSC riasztó
- • Gázkazán vezérlő hibák
- • Fényorgona
- • Ki hol gyártatja a NYÁK-ot ?
- • Napelem alkalmazása a lakás energia ellátásában
- • Labortápegység készítése
- • HDMI bekötés
- • Indukciós főzőlap javítása
- • Vásárlás, hol kapható?
- • Erősítő építése elejétől a végéig
- • Elfogadnám, ha ingyen elvihető
- • Háromfázisú aggregátor
- • Villanyszerelés
- • Riasztószerelés tapasztalatok, ötletek (kizárólag haladóknak)
- • Codefon kaputelefon
- • Kávéfőzőgép hiba
- • Házilag építhető fémkereső
- • Skoda Octavia elektromos probléma
- • LCD TV probléma
- • TV hiba, mi a megoldás?
- • Muzeális készülékek-alkatrészek restaurálása
- • Radiosonde
- • Oszcilloszkóp vétel, mit gondoltok?
- • Rádióamatőrök topikja
- • Bojler javítása, kérdések
- • Folyamatábrás mikrokontroller programozás Flowcode-dal
- • Westen 240 Fi gázkazán hiba
- • Szünetmentes táp javítása, élesztése
- • Klíma szervizelés, javítás
- • Nyomtató probléma
- • Szobatermosztát bekötése
- • Tina
- • Lemezjátszó beállítása, javítása
- • Padlófűtés vezérlés
- • Li-Po - Li-ion akkumulátor és töltője
- • Tápegységgel kapcsolatos kérdések
- • Autórádió (fejegység) problémák, kérdések, válaszok
- • Sonoff kapcsolók informatikai háttere (rendszer topológia)
» Több friss téma
|
A klónok CH340 Soros-USB illesztőjének drivere ( Letöltés)
Kapott eredmény, táblázatban.
(#) |
Moderátor hozzászólása jeges hozzászólására (») |
Márc 12, 2018 |
|
Értelmezhetetlen hozzászólás. Törölve.
Megpróbálnám 8 analóg értéket konvertálni 1 bájt-ra.
Utána a tőmben kapott értékeket értelmezni.
/*
RF Remote Capture sketch
Written by ScottC 24 Jun 2014
Arduino IDE version 1.0.5
Receiver: XY-MK-5V
Description: Use Arduino to Receive RF Remote signal
------------------------------------------------------------- */
const int dataSize = 500; //Arduino memory is limited (max=1700)
byte storedData[dataSize]; //Create an array to store the data
#define ledPin 13 //Onboard LED = digital pin 13
#define rfReceivePin A0 //RF Receiver data pin = Analog pin 0
const unsigned int upperThreshold = 100; //upper threshold value
const unsigned int lowerThreshold = 80; //lower threshold value
int maxSignalLength = 255; //Set the maximum length of the signal
int dataCounter = 0; //Variable to measure the length of the signal
unsigned long startTime=0; //Variable to record the start time
unsigned long endTime=0; //Variable to record the end time
unsigned long signalDuration=0; //Variable to record signal reading time
void setup(){
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
/* The following code will only run ONCE --------------
---Press the reset button on the Arduino to run again-- */
while(analogRead(rfReceivePin)<1){
//Wait here until a LOW signal is received
startTime=micros(); //Update start time with every cycle.
}
digitalWrite(ledPin, HIGH); //Turn LED ON
//Read and store the rest of the signal into the storedData array
for(int i=0; i<dataSize; i=i+2){
//Identify the length of the LOW signal---------------LOW
dataCounter=0; //reset the counter
while(analogRead(rfReceivePin)>upperThreshold && dataCounter<maxSignalLength){
dataCounter++;
}
storedData[i]=dataCounter;
//Identify the length of the HIGH signal---------------HIGH
dataCounter=0;//reset the counter
while(analogRead(rfReceivePin)<lowerThreshold && dataCounter<maxSignalLength){
dataCounter++;
}
storedData[i+1]=dataCounter;
//Any readings between the two threshold values will be ignored.
//The LOW or HIGH signal length must be less than the variable "maxSignalLength"
//otherwise it will be truncated. All of the HIGH signals and LOW signals combined
//must not exceed the variable "dataSize", otherwise it will be truncated.
//The maximum number of signals is 1700 - if you try to extend this variable to a higher
//number than 1700 - then the Arduino will freeze up and sketch will not work.
//-------------------------------------------------------------
}
endTime=micros(); //Record the end time of the read period.
signalDuration = endTime-startTime;
digitalWrite(ledPin, LOW);//Turn LED OFF
//Send report to the Serial Monitor
Serial.println("=====================");
Serial.print("Read duration: ");
Serial.print(signalDuration);
Serial.println(" microseconds");
Serial.println("=====================");
Serial.println("LOW,HIGH");
delay(20);
byte digitData[dataSize/8]; //Create an array to store the data
byte bytes1 = 0;
byte bit_ = 0;
unsigned int Bytes = 0;
for(int i=0; i<dataSize; i=i+2){
Serial.print(storedData[i]);
// 8 analóg érték konvertálása 1 bájt-ra
if(storedData[i]>0){ // 1 bit osztályozás
if(storedData[i]>5){
bytes1 |= 1 << bit_;
}
if(++bit_ >7){ // 1 Bytes tárolása
bit_ = 0;
digitData[Bytes] = bytes1;
Serial.print("Bytes: ");
Serial.println(digitData[Bytes]);
++Bytes;
}
}
Serial.print(",");
Serial.println(storedData[i+1]);
delay(20);
}
}
void loop(){
//Do nothing here
}
Köszi a tanácsokat, de ez már nekem magas. Csak az alapokat ismerem az Arduino témában.
(Ctrl+C – Ctrl+V ez megy nekem.)
Azért csináltam 3 új tesztet, a változtatásokkal.
Kimaradt a változó törlése:
...
digitData[Bytes] = bytes1;
bytes1 = 0; // <-- ezt szurdbe
...
A hozzászólás módosítva: Márc 12, 2018
Sziasztok!
Segítségre lenne szükségem ***.
Abszolút kezdő vagyok az arduino témában, bár a mostani projektben már módosítottam egy dolgot, de egynél viszont elakadtam. Egy hozzáértőnek szerintem "1-2" katt/sor és máris működne, amit szeretnék.
***
A lényeg röviden:
Van egy PWM kimenetem kb 490Hz két nyomógombbal, amit itt : https://cfpmanfredini.wordpress.com/2013/01/14/controllo-di-un-led-...a-pwm/ találtam.
A lényeg, hogy szeretnék egy hasonló megvalósítást úgy, hogy szeretnék egy plusz gombot, amit ha megnyomok, akkor az általam meghatározott értéket kijelezné + a (led) kimeneten megjelenne az a PWM érték.
Pl 1 vagy 2 másodpercre, vagy amit később meghatározok. Már annyit sikerült megoldanom, hogy a gombot és az értéket beírtam, viszont az időtartamot nem sikerült belőni, és ebben kérném bárki segítségét.
A másik nagy gondom, hogy viszonylag sürgős lenne.
Előre is köszönöm, üdv: Zsolt color=red***[][/color] A hozzászólás módosítva: Márc 14, 2018
Moderátor által szerkesztve
Valami alakul.
26db számból álló számsort kapok, ami mindig ugyanolyan sorrendben egymás után van. De többszöri próbálkozás után is csak egyszer volt meg a számsor, összes száma megjelenítve. Átlagban csak 15-20 szám van meg a számsorból. És nagyritkán nem is az elsővel kezdődik. Valamiért nem stabil.
Na most lehet hogy hülyeséget mondok, de nem lehet, hogy ugrókódos az adás?
Persze egy olcsó kapásjelzőnél nem hinném, hogy szükség volna rá.
Bár ki tudja, ha sok van egymás mellett, még a "szomszédnak" is bejelezne, ha horogra akad valami...
Meg egyébként az is elkébzelhető, hogy az adód és a vevőd nincs pontosan egy frekvenciára hangolva,
így mikor épp "összerezonál", akkor fogsz valamit, amikor meg nem, akkor nem.
Vagy esetleg valami interferencia is felléphet. A hozzászólás módosítva: Márc 12, 2018
Meglehet, hogy ugrókódos, de még odáig sem jutottunk, hogy a RCswitch libraries-el megjeleníthető értéket kapjunk. Az már csak a jövő titka, hogy ha ugrókódos, akkor mi lesz a megoldás rá.
A frekvenciával nem hiszem, hogy gond lenne, mert azért kezd valami kialakulni.
Egy lehetséges megoldás, ha az nem probléma, hogy a program futása leáll a várakozási idő időtartalmára.
const int nyomogomb = 11; //a fix érték nyomogombja
const int idole = 9; //a várkozási idő csökkentésének nyomogombja
const int idofel = 10; //a várkozási idő növelésének nyomogombja
int valtozo = 1000; //várkozási idő milliszekundumban (1 másodperc)
int lux2 = 0; //
void setup() {
pinMode (nyomogomb, INPUT_PULLUP);
pinMode (idole, INPUT_PULLUP);
pinMode (idofel, INPUT_PULLUP);
}
void loop() {
if (digitalRead (nyomogomb) == LOW){
lux = lux2; //lux értékének rögzítése
lux = 123; //általad megadott érték
analogWrite (LED1, lux);
lcd.setCursor (0,1);
lcd.print ("lux=");
lcd.print (lux);
delay (valtozo); //általad beállított várkozási idő
lux2 = lux; //lux értékének visszaállítása
analogWrite (LED1, lux);
}
if (digitalRead (idofel) == LOW){
valtozo = valtozo + 100; //lépési egység
if (valtozo == 5100){ //max. késleltetési idő
valtozo = 5000;
delay (50);
}
}
if (digitalRead (idole) == LOW){
valtozo = valtozo - 100;
if (valtozo < 0){
valtozo = 0;
delay (50);
}
}
}
Ha sürgősen nem találsz valakit, akkor tedd fel valahova a kapcsolást és a kódodat, aztán megpróbálunk segíteni. Nem tűnik űrtechnikának a dolog, de nem egyértelmű hogy mit akarsz. Ha egy új gomb megnyomására 1 másodpercre akarod átütni valamire a pwm kimenetet, akkor valami ilyesmi lenne a kód:
#define LED1 3 //Uscita LED
#define LED1 3 //Uscita LED
#define pdown 11 //Pulsante DOWN
#define pup 12 //Pulsante UP
#define pX 10 //uj gomb
#define luxX 128
#define timeX 1000 //millisec
int lastLux = 0;
unsigned long switchBackTime = 0;
int lux = 0; //Luminosità LED
void setup() {
pinMode (LED1, OUTPUT);
pinMode (pdown, INPUT_PULLUP);
pinMode (pup, INPUT_PULLUP);
pinMode (pX, INPUT_PULLUP);
Serial.begin (9600);
}
void loop() {
Serial.print (digitalRead(pdown));
Serial.println (digitalRead(pup));
if ( 0 == switchBackTime){
if (digitalRead(pup) == LOW){
lux = lux + 1;
if (lux == 255){
lux = 254;
}
}
if (digitalRead(pdown) == LOW){
lux = lux - 1;
if (lux < 0){
lux = 0;
}
}
if (digitalRead(pX) == LOW){
lastLux = lux;
lux = luxX;
switchBackTime = millis() +timeX;
}
}
else{
if (millis() > switchBackTime){
lux = lastLux;
switchBackTime = 0;
}
}
analogWrite (LED1, lux);
delay (10);
}
Fordul, de nem teszteltem. A honlapon levő kódból készült, és amíg le nem telt az 1 sec az X gomb megnyomása után addig letiltja a gombokat.
Lehet nem ugrókódos, egyszerűen a forgás sebességét is közli a vevővel. Az meg ugye soha nem azonos. Lehet ha egy pár vett jel oszcilloszkóp képét egymás alá teszed, hamarabb fogsz egymást fedő bitmintát, szabályokat találni. Fontos, hogy valami jól azonosítható ponttal kezdődjön. Pl hosszú pihenés utáni első megmozdítás.
Átrendeztem az értékek kiíratását.
Így talán jobban olvasható lesz az eredmény.
/*
RF Remote Capture sketch
Written by ScottC 24 Jun 2014
Arduino IDE version 1.0.5
Receiver: XY-MK-5V
Description: Use Arduino to Receive RF Remote signal
------------------------------------------------------------- */
const int dataSize = 500; //Arduino memory is limited (max=1700)
byte storedData[dataSize]; //Create an array to store the data
#define ledPin 13 //Onboard LED = digital pin 13
#define rfReceivePin A0 //RF Receiver data pin = Analog pin 0
const unsigned int upperThreshold = 100; //upper threshold value
const unsigned int lowerThreshold = 80; //lower threshold value
int maxSignalLength = 255; //Set the maximum length of the signal
int dataCounter = 0; //Variable to measure the length of the signal
unsigned long startTime=0; //Variable to record the start time
unsigned long endTime=0; //Variable to record the end time
unsigned long signalDuration=0; //Variable to record signal reading time
void setup(){
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
/* The following code will only run ONCE --------------
---Press the reset button on the Arduino to run again-- */
while(analogRead(rfReceivePin)<1){
//Wait here until a LOW signal is received
startTime=micros(); //Update start time with every cycle.
}
digitalWrite(ledPin, HIGH); //Turn LED ON
//Read and store the rest of the signal into the storedData array
for(int i=0; i<dataSize; i=i+2){
//Identify the length of the LOW signal---------------LOW
dataCounter=0; //reset the counter
while(analogRead(rfReceivePin)>upperThreshold && dataCounter<maxSignalLength){
dataCounter++;
}
storedData[i]=dataCounter;
//Identify the length of the HIGH signal---------------HIGH
dataCounter=0;//reset the counter
while(analogRead(rfReceivePin)<lowerThreshold && dataCounter<maxSignalLength){
dataCounter++;
}
storedData[i+1]=dataCounter;
//Any readings between the two threshold values will be ignored.
//The LOW or HIGH signal length must be less than the variable "maxSignalLength"
//otherwise it will be truncated. All of the HIGH signals and LOW signals combined
//must not exceed the variable "dataSize", otherwise it will be truncated.
//The maximum number of signals is 1700 - if you try to extend this variable to a higher
//number than 1700 - then the Arduino will freeze up and sketch will not work.
//-------------------------------------------------------------
}
endTime=micros(); //Record the end time of the read period.
signalDuration = endTime-startTime;
digitalWrite(ledPin, LOW);//Turn LED OFF
//Send report to the Serial Monitor
Serial.println("=====================");
Serial.print("Read duration: ");
Serial.print(signalDuration);
Serial.println(" microseconds");
Serial.println("=====================");
Serial.println("LOW,HIGH");
delay(20);
byte digitData[dataSize/(2*8)]; //Create an array to store the data
byte bytes1 = 0;
byte bit_ = 0;
unsigned int Bytes = 0;
unsigned int sorszam = 0;
for(int i=0; i<dataSize; i=i+2){
Serial.print(storedData[i]);
Serial.print(",");
Serial.println(storedData[i+1]);
// delay(20);
// 8 analóg érték konvertálása 1 bájt-ra
if(storedData[i]>0 && storedData[i+1]<110){ // 1 bit osztályozás
if(storedData[i]>5){
bytes1 |= 1 << bit_;
}
bit_++;
if(bit_ >7){ // 1 Bytes tárolása
bit_ = 0;
digitData[Bytes] = bytes1;
bytes1 = 0;
Serial.print(sorszam);
sorszam++;
Serial.print(" Bytes: ");
Serial.println(digitData[Bytes]);
++Bytes;
}
}
}
}
void loop(){
//Do nothing here
}
kegyetlen19!
Kapás jelződbe rakj egy ilyet fix kódot küld ASK ....
Bővebben: Link
(#) |
Gabó hozzászólása |
Márc 13, 2018 |
|
/ |
|
|
Elakadtam egy apró dologban.
Van 3 PWM kimenetem, amit szeretnék 3 különböző gombbal ki ill bekapcsolni.
Külön külön meg is van a program rész, de egybegyúrva nem akar működni.
Egy példát kérhetnék valakitől, hogy hogy induljak el? Kerestem guglin is, de szerintem nem jó kulcsszavakkal, mert mindenféle változatot kaptam, csak ami nekem kéne olyat nem.
Meddig jutottál el? Forráskód?
Szia Kapu48!
Köszönöm szépen a segítséged! Mivel tartozom?
Szia tbarath!
Köszönöm szépen a segítséged! Mivel tartozom?
Szia Kegyetlen19!
Köszönöm szépen a segítséged! Mivel tartozom?
Illetve! Adatmentéssel foglalkozom, ha esetleg tudok segíteni valamiben... Kérdezz, hívj vagy írj!
viber, whatsup.... egyebek
Igaz ez csak 2 gombra van egyenlőre:
const int buttonPin = 7; // the pin that the pushbutton is attached to
const int ledPin = 12; // the pin that the LED is attached to
const int buttonPin2 = 8; // the pin that the pushbutton is attached to
const int ledPin2 = 13; // the pin that the LED is attached to
int buttonPushCounter = 0; // counter for the number of button presses
int buttonState = 0; // current state of the button
int lastButtonState = 0; // previous state of the button
int buttonPushCounter2 = 0; // counter for the number of button presses
int buttonState2 = 0; // current state of the button
int lastButtonState2 = 0; // previous state of the button
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin2, INPUT);
pinMode(ledPin2, OUTPUT);
}
void loop() {
buttonState = digitalRead(buttonPin);
buttonState2 = digitalRead(buttonPin2);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
buttonPushCounter++;
}
delay(150);
}
if (buttonState2 != lastButtonState2) {
if (buttonState2 == HIGH) {
buttonPushCounter2++;
}
delay(150);
}
lastButtonState = buttonState;
lastButtonState2 = buttonState2;
if (buttonPushCounter % 4 == 0) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
if (buttonPushCounter2 % 4 == 0) {
digitalWrite(ledPin2, HIGH);
} else {
digitalWrite(ledPin2, LOW);
}
}
Ez meg egy kis részlet a PWMhez:
const int knobPin1 = 1; //Red LED control
const int knobPin2 = 2; //Green LED control
const int knobPin3 = 3; //Blue LED control
const int drivePin1 = 9;//Red LED drive
const int drivePin2 = 10;//Green LED drive
const int drivePin3 = 11;//Blue LED drive
int knobValue1 = 0;
int knobValue2 = 0;
int knobValue3 = 0;
void setup() {
pinMode(drivePin1, OUTPUT);
pinMode(drivePin2, OUTPUT);
pinMode(drivePin3, OUTPUT);
}
void loop() {
// read the variable resistors, convert it to 0 - 255
knobValue1 = analogRead(knobPin1) / 4;
knobValue2 = analogRead(knobPin2) / 4;
knobValue3 = analogRead(knobPin3) / 4;
analogWrite(9, knobValue1);
analogWrite(10, knobValue2);
analogWrite(11, knobValue3);
int knobPin1 = map(knobValue1,0,255,0,100);
lcd.setCursor(5,1);
lcd.print(knobPin1);
lcd.print ("%");
lcd.print(" ");
delay(1);
int knobPin2 = map(knobValue2,0,255,0,100);
lcd.setCursor(10,1);
lcd.print(knobPin2);
lcd.print ("%");
lcd.print(" ");
delay(1);
int knobPin3 = map(knobValue3,0,255,0,100);
lcd.setCursor(15,1);
lcd.print(knobPin3);
lcd.print ("%");
lcd.print(" ");
delay(1);
}
Persze még vannak benne egyéb sallangok, azokat kiszedtem.
Várom a tesztelés eredményét a javított kóddal!
Addig is:
Szerintem 24 bit a hasznos jel hossz a LOW szinten, a 25. páros HIGH hossza 107 – 108 jelzi az elválasztást.
Ezt a 25. LOW, HIGH párost lehetne szinkronizálásra használni, viszont a kódból ki kellene hagyni.
(A vételbe bekerülő zajokat (hibákat) is kezelni kellene valahogy!)
Tudtommal én a te témádhoz nem szóltam hozzá!?
Tisztelt Fórumozók!
Egy működő DZ09 okosórából van egy kiváló tft kijelzőm. Életre e lehet kelteni Arduinoval. A tipusát nem tudtam visszakeresni, ezért fordúltam Hozzátok.
Semmivel, szívesen. De ha nagyon akarod, akkor ott a hozzászólásom fejlécében egy felfelé mutató ujj, ha nyomd meg
Kell 3 nyomógomb az 5-6-7 pin-ek és a föld közé kötve. Megnyomásra kikapcsolja a LED-et, következő megnyomásra bekapcsolja. Tesztelve nincs, de fordul. Az lcd-s részeket kikommenteztem, mert anélkül nem fordult.
Viszont sanszos, hogy prellegni fog, én a végére tennék egy nagyobb delay-t.
const int knobPin1 = 1; //Red LED control
const int knobPin2 = 2; //Green LED control
const int knobPin3 = 3; //Blue LED control
const int drivePin1 = 9;//Red LED drive
const int drivePin2 = 10;//Green LED drive
const int drivePin3 = 11;//Blue LED drive
const int buttonPin1 = 5;//Red LED drive
const int buttonPin2 = 6;//Green LED drive
const int buttonPin3 = 7;//Blue LED drive
bool ledEnabled1 = true;
bool ledEnabled2 = true;
bool ledEnabled3 = true;
int knobValue1 = 0;
int knobValue2 = 0;
int knobValue3 = 0;
void setup() {
pinMode(drivePin1, OUTPUT);
pinMode(drivePin2, OUTPUT);
pinMode(drivePin3, OUTPUT);
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
pinMode(buttonPin3, INPUT_PULLUP);
}
void loop() {
// read the buttons
if (LOW == buttonPin1){
ledEnabled1 = !ledEnabled1;}
if (LOW == buttonPin2){
ledEnabled2 = !ledEnabled2;}
if (LOW == buttonPin3){
ledEnabled3 = !ledEnabled3;}
// read the variable resistors, convert it to 0 - 255
knobValue1 = analogRead(knobPin1) / 4;
knobValue2 = analogRead(knobPin2) / 4;
knobValue3 = analogRead(knobPin3) / 4;
if (ledEnabled1){
analogWrite(drivePin1, knobValue1);}
else{
analogWrite(drivePin1, 0);}
if (ledEnabled2){
analogWrite(drivePin2, knobValue2);}
else{
analogWrite(drivePin2, 0);}
if (ledEnabled3){
analogWrite(drivePin3, knobValue3);}
else{
analogWrite(drivePin3, 0);}
int knobPin1 = map(knobValue1,0,255,0,100);
/*lcd.setCursor(5,1);
lcd.print(knobPin1);
lcd.print ("%");
lcd.print(" ");*/
delay(1);
int knobPin2 = map(knobValue2,0,255,0,100);
/*lcd.setCursor(10,1);
lcd.print(knobPin2);
lcd.print ("%");
lcd.print(" ");*/
delay(1);
int knobPin3 = map(knobValue3,0,255,0,100);
/*lcd.setCursor(15,1);
lcd.print(knobPin3);
lcd.print ("%");
lcd.print(" ");*/
delay(1);
}
A hozzászólás módosítva: Márc 13, 2018
Azzal elrontanám az „adatátvitelt”. Ne tudnám használni az eredeti vevőegységet. az eredetivel párhuzamosan egy plusz vevőt akarok csinálni, világítás kapcsoltatására.
Természetesen, semmivel, ha tudunk segítünk.
|
|