Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   436 / 852
(#) kegyetlen19 válasza kapu48 hozzászólására (») Márc 13, 2018 /
 
Köszönöm. Ma egész nap dolgozom. Csak holnap tudom tesztelni. Jelentkezni fogok.
(#) Gabó válasza tbarath hozzászólására (») Márc 13, 2018 /
 
Köszi! Megnéztem így, a programba beültetés nélkül, de a ki-be kapcsolás nem megy. A PWM vezérlés az igen.
(#) bahrtzs hozzászólása Márc 13, 2018 /
 
Köszönöm még egyszer mindenkinek!
(#) tbarath válasza Gabó hozzászólására (») Márc 13, 2018 /
 
Pedig kéne neki. A végére tegyél egy 100 msed delay-t, és utána irasd ki mindhárom ledre ezt:
  1. if (ledEnabled1){ Serial.println("led 1 enabled");}


Ezt nem értem: "a programba beültetés nélkül"
(#) Gabó válasza tbarath hozzászólására (») Márc 14, 2018 /
 
Úgy értettem, hogy nem másoltam be az egész programba. De azóta beillesztettem, és megnéztem a soros monitoron:
  1. led 1 enabled
  2. led 2 enabled
  3. led 3 enabled
  4. led 1 enabled
  5. led 2 enabled
  6. led 3 enabled
  7. led 1 enabled
  8. led 2 enabled
  9. led 3 enabled

Ott folyamatosan írja a fentit. Hiába nyomom a gombot.
(#) kegyetlen19 válasza kapu48 hozzászólására (») Márc 14, 2018 /
 
Hello. Az Excel táblázatban van 3-3 teszt, az új kóddal.
Az eddigi teszteléseket a led-szalag vezérlővel csináltam, hogy legyen összehasonlítási alap, a RCswitch-el készített eredménnyel.
Viszont most kipróbáltam a kapásjelzővel is, és érdekesen alakult a teszt. (A régi kóddal is ugyanez az eredmény).
Érdeklődnék, hogyan lehet a kapásjelző RF jelét a hangkártya segítségével, megjeleníteni?
(#) tbarath válasza Gabó hozzászólására (») Márc 14, 2018 /
 
És a 3 nyomógomb az 5-6-7 pin-ek és a GND közé vannak kötve?
A setup()-ban ezekre a lábakra INPUT_PULLUP van beálltva?
Szedd ki a végéről a serial kiiratást, és cseréld ki az erre a fenti sorokat.
  1. // read the buttons
  2.         if (LOW == buttonPin1){
  3.                 Serial.println("button 1");
  4.                 ledEnabled1 = !ledEnabled1;}
  5.         if (LOW == buttonPin2){
  6.                 Serial.println("button 2");
  7.                 ledEnabled2 = !ledEnabled2;}
  8.         if (LOW == buttonPin3){
  9.                 Serial.println("button 3");
  10.                 ledEnabled3 = !ledEnabled3;}

Szerk: mekkora láma vagyok...
Helyesen:
  1. if (LOW == digitalRead(buttonPin1)){
  2.                 Serial.println("button 1");
  3.                 ledEnabled1 = !ledEnabled1;}
  4.         if (LOW == digitalRead(buttonPin2)){
  5.                 Serial.println("button 2");
  6.                 ledEnabled2 = !ledEnabled2;}
  7.         if (LOW == digitalRead(buttonPin3)){
  8.                 Serial.println("button 3");
  9.                 ledEnabled3 = !ledEnabled3;}

Nem csoda hogy nem ment, nem is olvasta ki a kód az értékét, csak a pin számát hasonlította össze a LOW-val, ami ugye a 0. Ez meg sose teljesül
A hozzászólás módosítva: Márc 14, 2018
(#) Gabó válasza tbarath hozzászólására (») Márc 14, 2018 /
 
Igen így vannak beállítva a lábak:
  1. pinMode(buttonPin1, INPUT_PULLUP);
  2.   pinMode(buttonPin2, INPUT_PULLUP);
  3.   pinMode(buttonPin3, INPUT_PULLUP);


A helyes kódot beírva is ugyan az a helyzet, hogy folyamatosan írja a fenti sorokat.
Felhúzó ellenállással is, és nélküle is.
(#) kapu48 válasza tbarath hozzászólására (») Márc 14, 2018 /
 
Szerintem mindkét állapotot ki kellene íratni, hogy érzékeljétek a változást!
  1. if (ledEnabled1){
  2.       Serial.println("led 1 enabled");
  3.     }else{
  4.       Serial.println("led 1 disabled");
  5.     }
(#) tbarath válasza Gabó hozzászólására (») Márc 14, 2018 /
 
rakd fel az egész kódot légyszi
(#) tbarath válasza kapu48 hozzászólására (») Márc 14, 2018 /
 
Valóban, de tegnap este nem szúrta ki a szememet, hogy ezt a részt valahogy kitöröltem a kommentből...
Bár a legutóbbi iterációban a gombnyomás érzékelésére koncentrálok.
(#) Gabó válasza tbarath hozzászólására (») Márc 14, 2018 /
 
Egész kódot felesleges, mert azokban az lcd Init, RTC, és DS18B20nak a kódjai vannak.

Érdekes, Kapu módosítását megcsinálva jó.
A hozzászólás módosítva: Márc 14, 2018
(#) Gabó válasza tbarath hozzászólására (») Márc 14, 2018 /
 
Nem értem az anomáliát, mert csak beírtam kapu kódát is a kódba, és jó lett a kapcsolás is. Mást pedig nem változtattam.
Mindkettőtöknek köszönöm a segítséget!
(#) tbarath válasza Gabó hozzászólására (») Márc 14, 2018 /
 
Akkor nem értem.
De mindegy, ha jó akkor örülünk
(#) Gabó válasza tbarath hozzászólására (») Márc 14, 2018 /
 
Az a poén, hogy én se értem. Semmit nem változtattam a kapcsoláson se, de miután beírtam, jó lett a kijelzés a soros monitoron is meg a nyomógombra reagálás is. Persze mind a 3 ledre beírtam megfelelő módon.
  1. if (ledEnabled1){
  2.       Serial.println("led 1 enabled");
  3.     }else{
  4.       Serial.println("led 1 disabled");
  5.     }
(#) kapu48 válasza kegyetlen19 hozzászólására (») Márc 14, 2018 /
 
Az első 3 tesztedből már látszik, hogy használható lenne az elképzelésünk.
Csak bekellene fejezni a projektet, mivel még csak a felfedezések stádiumában tart.
Amennyiben még aktuális?

A második 3 teszt alapján viszont nem kaptál értékelhető mérést.
Tehát a kapásjelző magasabb frekvencián dolgozik, mint amit az AVR aránylag lassú ADC átalakítója letudna mérni.
Ezért az ADC jelszínt mérést kikellene hagyni, és közvetlen TTL jelszinteket figyelni.
Ahhoz az kel, hogy TTL jeleket kapj a vevőből.
Digitális rendszerek II.

A jelek analizálására jobb lenne 1 ilyen:

Logic-24M-8CH
Bővebben: Link
(#) Kera_Will válasza kegyetlen19 hozzászólására (») Márc 14, 2018 /
 
Idézet:
„Érdeklődnék, hogyan lehet a kapásjelző RF jelét a hangkártya segítségével, megjeleníteni?”


Ha nincs analizátorod akkor egy hangkártya elé rakott feszültségosztó (1/100 1/1000) és leválasztó kondi amin keresztül a távírányító vevőben lévő hangfrekvenciát csatolod, vezeted be rá.
A hozzászólás módosítva: Márc 14, 2018
(#) kegyetlen19 válasza kapu48 hozzászólására (») Márc 14, 2018 /
 
Mivelhogy a kapunyitó, led-szalag vezérlő távirányítójának, kódkiolvasásához tökélete a RCswitch libraries, így felesleges ezen irányba tovább haladni.
Idézet:
„Ahhoz az kel, hogy TTL jeleket kapj a vevőből.”

Morzsa15 hangkártyás méréseiből, nem az derül ki, hogy alacsony és magas szintek váltakoznak a vevő kimenetelén?
Arduino-ra, van logikai analizátor projekt?
(#) kapu48 válasza kegyetlen19 hozzászólására (») Márc 14, 2018 /
 
Idézet:
„Morzsa15 hangkártyás méréseiből”
?
Ha beraknád a linkjét?

Bővebben: Link
A hozzászólás módosítva: Márc 14, 2018
(#) tbarath válasza kegyetlen19 hozzászólására (») Márc 14, 2018 /
 
Arduino-ra van mindenféle project, csodálkoznék ha erre nem lenne legalább 10 féle.
A kérdés csak az, hogy elég jó-e, amit ki lehet belőle hozni. Kínából pár dollárért lehet rendelni Saleae Logic klónt, csak arra kell figyelni hogy nincs bemeneti védelme. Bár az az arduinon sincs.
(#) kegyetlen19 válasza kapu48 hozzászólására (») Márc 14, 2018 /
 
(#) kegyetlen19 válasza tbarath hozzászólására (») Márc 14, 2018 /
 
Köszi. Néztem már, csak sok idő mire ideér.
(#) kapu48 válasza kegyetlen19 hozzászólására (») Márc 14, 2018 /
 
A linkelt ábrák alsó jel sorozat digitálisnak tűnik.
Megpróbálhatsz digitális impulzus jel hosszokat mérni.
Most csak gyorsan átalakítottam az előző programot, hogy tesztelhesd.
  1. /*
  2.   RF Remote Capture sketch
  3.      Written by ScottC 24 Jun 2014
  4.      Arduino IDE version 1.0.5
  5.      Receiver: XY-MK-5V
  6.      Description: Use Arduino to Receive RF Remote signal          
  7.  ------------------------------------------------------------- */
  8.  
  9.  const int dataSize = 500;  //Arduino memory is limited (max=1700)
  10.  byte storedData[dataSize];  //Create an array to store the data
  11.  
  12.  #define ledPin 13           //Onboard LED = digital pin 13
  13.  #define rfReceivePin A0     //RF Receiver data pin = Analog pin 0
  14.  const unsigned int upperThreshold = 100;  //upper threshold value
  15.  const unsigned int lowerThreshold = 80;  //lower threshold value
  16.  int maxSignalLength = 255;   //Set the maximum length of the signal
  17.  int dataCounter = 0;    //Variable to measure the length of the signal
  18.  unsigned long startTime=0;  //Variable to record the start time
  19.  unsigned long endTime=0;    //Variable to record the end time
  20.  unsigned long signalDuration=0; //Variable to record signal reading time
  21.  
  22.  
  23.  void setup(){
  24.   Serial.begin(9600);
  25.   pinMode(ledPin, OUTPUT);    
  26.  
  27.   /* The following code will only run ONCE --------------
  28.   ---Press the reset button on the Arduino to run again-- */
  29.  
  30.  // while(analogRead(rfReceivePin)<1){
  31.   while(digitalRead(rfReceivePin)==0){    
  32.       //Wait here until a LOW signal is received
  33.       startTime=micros();  //Update start time with every cycle.  
  34.   }
  35.   digitalWrite(ledPin, HIGH);  //Turn LED ON
  36.  
  37.  
  38.   //Read and store the rest of the signal into the storedData array
  39.   for(int i=0; i<dataSize; i=i+2){
  40.    
  41.     //Identify the length of the LOW signal---------------LOW
  42.     dataCounter=0; //reset the counter
  43. //    while(analogRead(rfReceivePin)>upperThreshold && dataCounter<maxSignalLength){
  44.     while(digitalRead(rfReceivePin)== 0 && dataCounter<maxSignalLength){  
  45.       dataCounter++;
  46.     }
  47.     storedData[i]=dataCounter;
  48.    
  49.     //Identify the length of the HIGH signal---------------HIGH
  50.     dataCounter=0;//reset the counter
  51.   //  while(analogRead(rfReceivePin)<lowerThreshold && dataCounter<maxSignalLength){
  52.     while(digitalRead(rfReceivePin)== 1 && dataCounter<maxSignalLength){  
  53.       dataCounter++;
  54.     }
  55.     storedData[i+1]=dataCounter;
  56.    
  57.     //Any readings between the two threshold values will be ignored.
  58.     //The LOW or HIGH signal length must be less than the variable "maxSignalLength"
  59.     //otherwise it will be truncated. All of the HIGH signals and LOW signals combined
  60.     //must not exceed the variable "dataSize", otherwise it will be truncated.
  61.     //The maximum number of signals is 1700 - if you try to extend this variable to a higher
  62.     //number than 1700 - then the Arduino will freeze up and sketch will not work.
  63.     //-------------------------------------------------------------
  64.   }
  65.  
  66.   endTime=micros();  //Record the end time of the read period.
  67.   signalDuration = endTime-startTime;
  68.  
  69.   digitalWrite(ledPin, LOW);//Turn LED OFF
  70.  
  71.   //Send report to the Serial Monitor
  72.   Serial.println("=====================");
  73.   Serial.print("Read duration: ");
  74.   Serial.print(signalDuration);
  75.   Serial.println(" microseconds");
  76.   Serial.println("=====================");
  77.   Serial.println("LOW,HIGH");
  78.   delay(20);
  79.  
  80.   byte digitData[dataSize/(2*8)];  //Create an array to store the data
  81.   byte bytes1 = 0;
  82.   byte bit_ = 0;
  83.   unsigned int Bytes = 0;
  84.   unsigned int sorszam = 0;
  85.   for(int i=0; i<dataSize; i=i+2){
  86.     Serial.print(storedData[i]);
  87.  
  88.     Serial.print(",");
  89.     Serial.println(storedData[i+1]);
  90.    // delay(20);
  91.  
  92.         // 8 analóg érték konvertálása 1 bájt-ra
  93.     if(storedData[i]>0 && storedData[i+1]<110){ // 1 bit osztályozás
  94.       if(storedData[i]>5){
  95.         bytes1 |= 1 << bit_;
  96.       }
  97.       bit_++;
  98.       if(bit_ >7){    // 1 Bytes tárolása
  99.         bit_ = 0;
  100.         digitData[Bytes] = bytes1;
  101.         bytes1 = 0;
  102.         Serial.print(sorszam);
  103.         sorszam++;
  104.         Serial.print(" Bytes: ");
  105.         Serial.println(digitData[Bytes]);
  106.         ++Bytes;
  107.       }
  108.     }
  109.   }
  110.  }
  111.  
  112.  void loop(){
  113.    //Do nothing here
  114.  
  115.  }
(#) tbarath válasza kegyetlen19 hozzászólására (») Márc 14, 2018 /
 
A royal mail elég gyors: Bővebben: Link
Vagy HEstore: Bővebben: Link
(#) kegyetlen19 válasza kapu48 hozzászólására (») Márc 14, 2018 /
 
Semmi, meg se „mukkan”. Se a led-vezérlőtől, se a kapásjelzőtől.
(#) kapu48 válasza kegyetlen19 hozzászólására (») Márc 14, 2018 /
 
Akkor hangkártyán tudsz 2 csatornát mérni egyszerre.
Led vezérlő és Kapásjelző?
Akkor látnánk egyszerre mind a kettőt, és hogy mi a különbség köztük.
(#) kegyetlen19 válasza kapu48 hozzászólására (») Márc 14, 2018 /
 
Azokat a méréseket Morzsa15 készítette.
Holnap megpróbálok én is mérni. Remélem, összejön. Majd jelentkezek.
(#) kapu48 válasza kegyetlen19 hozzászólására (») Márc 14, 2018 /
 
Az a gond vele, hogy nem magyarázta el, hogy hól mit mért!
Látunk 2 jel sorozatott, de melyik mi?

Eddig az biztos, hogy nem TTL szintű jelek.
A hozzászólás módosítva: Márc 14, 2018
(#) RoliNyh hozzászólása Márc 14, 2018 /
 
Estét!

Léptetőmotort hajtok direktbe ULN2003 IC -vel.
  1. int Coil1 = 8;   //IN1 on the ULN2003 Board, BLUE end of the Blue/Yellow motor coil
  2. int Coil2 = 9;   //IN2 on the ULN2003 Board, PINK end of the Pink/Orange motor coil
  3. int Coil3 = 10;  //IN3 on the ULN2003 Board, YELLOW end of the Blue/Yellow motor coil
  4. int Coil4 = 11;  //IN4 on the ULN2003 Board, ORANGE end of the Pink/Orange motor coil
  5. int S_LED = 13;
  6.  
  7. void setup()
  8. {
  9.   pinMode(Coil1, OUTPUT);
  10.   pinMode(Coil2, OUTPUT);
  11.   pinMode(Coil3, OUTPUT);
  12.   pinMode(Coil4, OUTPUT);
  13.   pinMode(S_LED, OUTPUT);
  14.  
  15.   digitalWrite(Coil1, LOW);
  16.   digitalWrite(Coil2, LOW);
  17.   digitalWrite(Coil3, LOW);
  18.   digitalWrite(Coil4, LOW);
  19.   digitalWrite(S_LED, LOW);
  20. }
  21.  
  22. void loop()
  23. {
  24.       digitalWrite(S_LED, HIGH);
  25.       digitalWrite(Coil4, LOW);
  26.       digitalWrite(Coil2, HIGH);
  27.       digitalWrite(Coil3, LOW);
  28.       digitalWrite(Coil1, HIGH);
  29.       //delay(2);
  30.       delayMicroseconds(2000);
  31.      
  32.       digitalWrite(S_LED, LOW);
  33.       digitalWrite(Coil1, LOW);
  34.       digitalWrite(Coil2, HIGH);
  35.       digitalWrite(Coil3, HIGH);
  36.       digitalWrite(Coil4, LOW);
  37.       //delay(2);
  38.       delayMicroseconds(2000);
  39.  
  40.       digitalWrite(S_LED, HIGH);
  41.       digitalWrite(Coil1, LOW);
  42.       digitalWrite(Coil2, LOW);
  43.       digitalWrite(Coil3, HIGH);
  44.       digitalWrite(Coil4, HIGH);
  45.       //delay(2);
  46.       delayMicroseconds(2000);
  47.    
  48.       digitalWrite(S_LED, LOW);
  49.       digitalWrite(Coil1, HIGH);
  50.       digitalWrite(Coil2, LOW);
  51.       digitalWrite(Coil3, LOW);
  52.       digitalWrite(Coil4, HIGH);
  53.       //delay(2);
  54.       delayMicroseconds(2000);
  55. }


A delay(2) értékét már hiába veszem kissebbre, az 1 -es értéket már nem bírja,
gondolom a motor kiesik a szinkronból, jól gondolom?
Két motort is próbáltam, különbözőek, de a delay(2) alatti értékeket egyik se bírja.

Van valami mód szerintetek a gyorsításra?
Vagy nem tudom a STEP/DIR rendszerü vezérléssel se menne gyorsabban?
(#) kapu48 válasza kegyetlen19 hozzászólására (») Márc 14, 2018 /
 
Most volt időm újra átnézni a linkelt ábrákat.

Kiderült, hogy a felső jel sorozat a kapásjelző.
Siralmasan rossz, alul felül óriási túllövésekkel, és alacsony jelszint különbséggel.
A tüskéket le lehetne vágni, mondjuk 47n – 100n-es kerámia kondikal.

A jelszintet pedig formázni kellene!
Mondjuk ilyen komparátorral:Bővebben: Link LM239NG
Az adatlapjában szereplő: Bővebben: Link
Figure 3. Noninverting Comparator with Hysteresis. bekötés szerint.
Az R1 + Rref helyére teszel 10K lineális potmétert, és azzal betudod állítani a kapcsolási szintet.
A tesztprogram lehet az előző analóg méréseken alapuló változat.
Következő: »»   436 / 852
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem