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   264 / 863
(#) Kera_Will válasza Meggyötört Pingvin hozzászólására (») Szept 21, 2016 /
 
Neked analóg fényorgonára van szükséged .
Felesleges Ardut erre használni , habár van erre is kész projekt ardura.
Erre van külön topic ami direkt LEDes fényorgonákkal foglalkozik.
A hangerő változás függetlenségét AGC áramkörrel lehet javítani.
Ezt egyszerűbb ha analóg láncban végzed el szerintem.Elég lehet akár pár dióda erre.
Az erősítő láncban elhelyezve.
Így kb 50mV-10V közti bemenőjel változást is kilehet egyenlíteni .
(#) Kera_Will válasza Meggyötört Pingvin hozzászólására (») Szept 21, 2016 /
 
Nézzél át ebbe a topicba : LEDES orgona

Ezt is megtalálod: egyszerű LEDes

(#) teglascs válasza Meggyötört Pingvin hozzászólására (») Szept 21, 2016 /
 
Ez is hasznos lehet: cikk.
(#) Kera_Will válasza teglascs hozzászólására (») Szept 21, 2016 /
 
Hasznos lehet valóban ... de a fején cipelni 4 5 kis panel darabkát + akkut is.
ágyúval verébre
Egyik ismerősömön láttam olyan pólót is aminek az elején volt komplett ledes spektrumanalizátor
A hozzászólás módosítva: Szept 21, 2016
(#) teglascs válasza Kera_Will hozzászólására (») Szept 21, 2016 /
 
Ezeket szépen be kell tenni a mellény-/farzsebbe, a sapkába csak a kábelek mennek fel a kijelzőhöz.
(#) Kera_Will válasza teglascs hozzászólására (») Szept 21, 2016 /
 
No majd eldönti a kérdező ...
(#) bujan hozzászólása Szept 21, 2016 / 1
 
Nem tudom érdekel e valakit, de elkészítettem a 4 digites kijelzést MAX7219-el átkötés nélkül. Ha érdeklődő van, felteszem a jpeg képeket és a loyout6.0 fájlt is.
(#) (Felhasználó 120038) válasza bujan hozzászólására (») Szept 22, 2016 /
 
Szia!

Engem minden ilyesmi érdekel, mert kezdő vagyok!

Még annyi, hogy mi az a loyout6.0 fájl? Gondolom NYÁK tervezőprogram fájlja.
(#) atus1981 válasza kameleon2 hozzászólására (») Szept 22, 2016 /
 
Köszi! Egy kijelző és egy atmega328 megy csak róla, nem melegszik.
(#) attika válasza (Felhasználó 120038) hozzászólására (») Szept 22, 2016 /
 
Igen ezt jól látod, Layout ez így helyes és a sprint layout nyáktervezővel lehet megnyitni.
(#) hixpp02 válasza bujan hozzászólására (») Szept 23, 2016 /
 
Ha van rá lehetőség megköszönném, nekem épp most jól jönne.
(#) bujan hozzászólása Szept 23, 2016 /
 
Akinek nincs meg a Sprint-Layout 6.0 annak a képek lesznek a jók. A beültetési képen rajta van a panel pontos mérete, melyet Word-ben is beállíthatsz. A NYÁK-ot elkészítettem és jól működik. Én megvettem az eredeti Sprint-Layout 5.0 és a Sprint-Layout 6.0-t is. Szerettem volna az 5.0-ás verzióba átalakítani, mert annak van ingyenes változata is, de nem sikerült. A Vaterán vettem az IC-t 200, a kijelzőt 300 forintért. Így nagyon megérte. A panelt szerintem már nem lehet kisebbre elkészíteni a felfogatás miatt. Mindenkinek jó használatot.
(#) bujan válasza attika hozzászólására (») Szept 23, 2016 /
 
Teljesen igazad van az elírás miatt.
Pontosan a program Sprint-Layout 6.0, a fájl pedig lay6
(#) hixpp02 válasza bujan hozzászólására (») Szept 23, 2016 /
 
Köszönöm a segítséget !
(#) kapu48 válasza bujan hozzászólására (») Szept 23, 2016 /
 
Ezt úgy kellett volna megcsinálni, hogy sorolni lehessen, egymás mellé, alá fölé!
Mert több egymás mellett jobban mutat.
Kijelző méretűre. A dekóder IC-t a panel másik oldalára.
(#) bujan válasza kapu48 hozzászólására (») Szept 23, 2016 /
 
Egyenlőre csak egy négydigites kijelzőt készítettem egyoldalas panelra, mert ezt használják leggyakrabban. Hogy "Mert több egymás mellett jobban mutat" ez egy más kérdés. A decoder IC a panel másik oldalán van és ez fel is van tüntetve a beültetési rajzon "MAX7219 MIRROR". Még annyit, ha ezt más is olvassa, hogy a nem használt lábak 1-2 millimétert fel vannak hajtva. Ha a panel kijelző méretű, nem tudom hogyan lesz valahova beültetve, felfogatva. Mellesleg szívesen megnéznék egy másfajta megoldást is.
A hozzászólás módosítva: Szept 23, 2016
(#) Kera_Will válasza bujan hozzászólására (») Szept 23, 2016 /
 
Idézet:
„Mellesleg szívesen megnéznék egy másfajta megoldást is.”

Ebay tele van vele ... DIY KIT-ként is ...
csak panel hosszú
ültetve 8 digit hosszú keskeny
LED 8*8 mátrix DIY + bónusz LED mátrix ha 7szegmenses kijelzőt hajtasz meg és fel fűzhető
Lehet válogatni ...
A hozzászólás módosítva: Szept 23, 2016
(#) kapu48 válasza bujan hozzászólására (») Szept 23, 2016 /
 
(#) Kera_Will válasza kapu48 hozzászólására (») Szept 23, 2016 /
 
Igen azt már részben felfűzték előre nekünk
(#) bujan válasza Kera_Will hozzászólására (») Szept 23, 2016 / 1
 
Majd ha tudok furat galvanizáltat készíteni visszatérünk rá.
Itt a lényeg és a sok munka az egyszerűségen és az otthoni kivitelezésen volt.
Ja még annyit, hogy kész gyári terméket venni csak pénz kérdése. Én olyan megoldásokra lettem volna kíváncsi, melyet egy másik fórumozó készít.
A hozzászólás módosítva: Szept 23, 2016
(#) mechanika hozzászólása Szept 23, 2016 /
 
Sziasztok!

Arduino uno-t használok SD+RTC shield-el.
Az arduino sleep üzemben vár egy megszakítást (nyomógomb), majd rögzíti az sd kártyára az időpontot és alszik tovább.
Azt tapasztaltam, hogy a nyomógomb megnyomása nélkül kb.: 1 óra 5-7 percenként rögzít egy dátumot, mintha megnyomtam volna a gombot.
Van valakinek tippje, hogy mi lehet ennek az oka?
  1. /*
  2.   SD card datalogger
  3.  
  4.  This example shows how to log data  three analog sensors
  5.  to an SD card using the SD library.
  6.  
  7.  The circuit:
  8.  * analog sensors on analog ins 0, 1, and 2
  9.  * SD card attached to SPI bus as follows:
  10.  ** MOSI - pin 11
  11.  ** MISO - pin 12
  12.  ** CLK - pin 13
  13.  ** CS - pin 4
  14.  
  15.  created  24 Nov 2010
  16.  modified 9 Apr 2012
  17.  by Tom Igoe
  18.  
  19.  This example code is in the public domain.
  20.  
  21.  */
  22. #include "LowPower.h"
  23. #include <SPI.h>
  24. #include <SD.h>
  25. #include <Wire.h>
  26. #include "RTClib.h"
  27. RTC_DS1307 RTC;
  28. const int chipSelect = 10;
  29. void wakeUp(){}
  30.  
  31. void setup() {
  32.   // Open serial communications and wait for port to open:
  33.   Serial.begin(9600);
  34.    Wire.begin();
  35.    RTC.begin();
  36.   while (!Serial) {
  37.     ; // wait for serial port to connect. Needed for native USB port only
  38.   }
  39.   Serial.print("Initializing SD card...");
  40.   // see if the card is present and can be initialized:
  41.   if (!SD.begin(chipSelect)) {
  42.     Serial.println("Card failed, or not present");
  43.     // don't do anything more:
  44.     return;
  45.   }
  46.    if (! RTC.isrunning()) {
  47.    Serial.println("RTC is NOT running!");
  48.    // following line sets the RTC to the date & time this sketch was compiled
  49.    RTC.adjust(DateTime(__DATE__, __TIME__));
  50.  }
  51.   Serial.println("card initialized.");
  52. }
  53. void loop() {
  54.  
  55.      attachInterrupt(1, wakeUp, RISING);
  56.   LowPower.powerDown(SLEEP_FOREVER, ADC_OFF, BOD_OFF);
  57.   delay(400);
  58.   // make a string for assembling the data to log:
  59.   //latogato++;
  60.   String dataString = "";
  61.   DateTime now = RTC.now();
  62.   for (int analogPin = 0; analogPin < 3; analogPin++) {
  63.     int sensor = analogRead(analogPin);
  64.     dataString += String(sensor);
  65.     if (analogPin < 3) {
  66. dataString += ",";
  67.     }
  68.   }
  69.       dataString +=now.year();
  70.       dataString +="/";
  71.       dataString +=now.month();
  72.       dataString +="/";
  73.       dataString +=now.day();
  74.       dataString +="  ";
  75.       dataString +=now.hour();
  76.       dataString += ":";
  77.       dataString += now.minute();
  78.       dataString += ":";
  79.       dataString += now.second();
  80.       dataString += ",";                
  81.   // open the file. note that only one file can be open at a time,
  82.   // so you have to close this one before opening another.
  83.   File dataFile = SD.open("datalog.txt", FILE_WRITE);
  84.   // if the file is available, write to it:
  85.   if (dataFile) {
  86.     dataFile.println(dataString);
  87.     dataFile.close();
  88.     // print to the serial port too:
  89.     Serial.println(dataString);
  90.   }
  91.   // if the file isn't open, pop up an error:
  92.   else {
  93.     Serial.println("error opening datalog.txt");
  94.   }
  95. }

datalog.PNG
    
(#) zsolt58 hozzászólása Szept 23, 2016 /
 
Hello.
Ez az a hiba üzenet arduinoban miért lehet?
Talán mert nincs rá csatlakoztatva a SIM900 shield?
Ha rá kötöm a SIM900shieldet akkor működni fog?
Üdv.
  1. Arduino: 1.6.11 (Windows 7), Alaplap:"Arduino/Genuino Uno"
  2.  
  3.  #include "SIM900.h"
  4.  
  5.                     ^
  6.  
  7. compilation terminated.
  8.  
  9. exit status 1
  10. Error compiling for board Arduino/Genuino Uno.
A hozzászólás módosítva: Szept 23, 2016
(#) (Felhasználó 120038) válasza mechanika hozzászólására (») Szept 24, 2016 /
 
Szia!

Az a gomb, ami feléleszti melyik lábra van kötve és hogyan? Milyen kapcsoló van rajta?

Ha megnyomod akkor megy rendesen ugye?

Valami olyasmire is gondolok, hogy ennyi idő alatt fesz vel annyi zajt (vagy valami másik közeli ezköz ennyi időközönként kapcsol be) a láb, hogy úgy érzékelje, mintha megnyomtad volna a gombot.

A kódot még nézegetem, de eddig nem láttma benne gondot, de ez nem feltétlenül jelenti azt, hogy nem az abban lévő hiba okozza a jelenséget.
A hozzászólás módosítva: Szept 24, 2016
(#) (Felhasználó 120038) válasza (Felhasználó 120038) hozzászólására (») Szept 24, 2016 /
 
Lenyelte a válaszom.

Az UNO-n csak a 2 -3 lábakat lehet erre a célra használni!

Bővebben: Link

Azt is írtam, hogy a wakeup{} ban kellene meghívni egy olyan függvényt ami elintézi a szenzor olvasást és az SD írást. (Szerintem feléledéskor az a függvény fut le, amit az attachInterrupt(1, wakeUp, RISING); -ban megadtál, de tévedhetek is )

Szerintem jobb lenne pl:

attachInterrupt(digitalPinToInterrupt(2),wakeUp, RISING);

Ugyanezt a függvényt természetesen a loop-ban is hívogathatod, ha kell egyáltalán.
A hozzászólás módosítva: Szept 24, 2016
(#) Szabi1 hozzászólása Szept 25, 2016 /
 
Sziasztok! A következő problémával fordulok hozzátok: Adott egy arduino UNO, ami egy stepper motrot vezérel. Ez a stepper motor egy kamerát mozgat majd 90 cm hosszan, mindkét végébe kerül egy mikrokapcsoló, és ha beleütközik akkor megváltozik a stepper motor iránya. Továbbá van egy potméter, amivel lehet szabályozni a delayt a kiküldött impulzusok között, és így tudja a potméter lassítani a sebességet.(frekvenciát) Van egy kalibrálási üzemmód is ami megszámolja egyik végkapcsolótól a másikig, hogy hány impulzust kell kiküldjön, ahoz hogy elérjen (nem ismert az áttétel, egy BL-TB6560-V2.0 kapja az impulzusokat és az vezérli a steppert) majd elmenti az EEPROM-ba. A kalibrálási értékből ki lehetne számolni, hogy 1 cm megtételéhez hány lépésimpulzus kell. A gond csak az, hogy az LCD-re ki kellene írni, hogy milyen sebességgel megyen a motor (cm/s vagy mm/s ba kérték) és én ezt úgy tudnám elképzelni, hogy használnák egy időzítőt ami számol 1 től 10 sec-ig, közben a szoftwer méri hány impulzust adott ki majd meghív egy megszakítást, és kiszámolja, hogy a megtett lépésimpluzus hány cm-nek felel meg, és kiirja a képernyőre a sebességet. Van valakinek valami jobb ötlete, vagy valami megvalósított példája?
(#) mateatek válasza Szabi1 hozzászólására (») Szept 25, 2016 /
 
Miért nem egy timert használsz a stepper vezérlő meghajtásához. Annak is egyszerűen tudod a frekvenciáját, és a kitöltését szabályozni, és így a delay-ek helyett valamire tudod használni az idődet.
(#) (Felhasználó 120038) válasza Szabi1 hozzászólására (») Szept 25, 2016 /
 
Szia!

Mennyire kell pontosnak lennie?

Az elfordulás/hosszváltozás menni fog, ha sokat mérsz, azzal nem lesz akkora gond szerintem.

A sebesség már macerásabb szerintem. Ha delay-el, vagy más erőforrás igénylő megoldással foglalkozol, akkor kiszámolhatod a késleltetésből a frekvenciát, de nem lesz pontos, mert a műveletekhez szükséges időt nem tudod meghatározni könnyen. A pillanatnyi frekvenciából tudod a szögsebességet, abból meg a fentebb meghatározott elfordulás-hosszirányú elmozdulásból kijön a pillanatnyi sebesség. Jobb lenne, ha minden 3. 4. kiadott impulzusra számolnál valami átlag sebességet, vagy mozgóátlagot. Szerintem pontosabb lenne, mint a pillanatnyival operálni.

Most első blikkre azonban ez az idő elhanyagolható szerintem, legalábbis akkor, ha a léptetőmotor frekvenciája sokkal kisebb, mint az arduino műveletigénye.
(#) Szabi1 válasza (Felhasználó 120038) hozzászólására (») Szept 25, 2016 /
 
Egy tizedes pontossággal elég volna, a motormozgatáson kívűl mást nem nagyon kell csináljon, azért nem használtam timert a PWM hez, vagy egyáltalán a vezérléshez.

Ez a kód van most:
  1. #include <LiquidCrystal.h>
  2. #include <EEPROM.h>
  3.  
  4.  
  5. /** the current address in the EEPROM (i.e. which byte we're going to write to next) **/
  6. int addr = 0;
  7.  
  8. // initialize the library with the numbers of the interface pins
  9. LiquidCrystal lcd(12, 11, 7, 6, 5, 4);
  10.    int val = 0;  
  11.    volatile byte state = LOW;
  12.    volatile bool mystop=false;
  13.    unsigned int stepp=0;
  14.    unsigned int max_step=1;
  15.    char myData[5];
  16.    long debouncing_time =500;
  17.    volatile unsigned long last_micros;
  18.    volatile unsigned int calibrate_level=0;
  19.    int eeAddress = 0; //EEPROM location of calibration data
  20.    volatile  float pot_read=0;
  21.    volatile  float mytime=0;
  22.    volatile  int thespeed=0;
  23.  
  24. int i=0;
  25.  
  26. // the largest delay is: 16383 microseconds
  27. void motor_control(int my_delay)
  28. {
  29.    
  30.  
  31.     digitalWrite(8, HIGH);
  32.     delayMicroseconds(my_delay);
  33.     delayMicroseconds(my_delay);
  34.     delayMicroseconds(my_delay);
  35.     digitalWrite(8, LOW);
  36.     delayMicroseconds(my_delay);
  37.     delayMicroseconds(my_delay);
  38.     delayMicroseconds(my_delay);
  39.          
  40.             lcd.setCursor(0, 1);
  41.             itoa(mytime, myData, 10);
  42.             lcd.print(myData);
  43.             lcd.setCursor(0, 0);
  44.             itoa(max_step, myData, 10);
  45.             lcd.print(myData);
  46. }
  47.  
  48.  
  49.  
  50.  
  51.    
  52. void setup() {
  53.   //lcd setup
  54.   lcd.begin(16, 2);
  55.  
  56.  
  57.   // IO setup
  58.     pinMode(8, OUTPUT);
  59.     pinMode(9, OUTPUT);
  60.     pinMode(0, OUTPUT);
  61.     digitalWrite(8, LOW);
  62.     digitalWrite(9, LOW);
  63.     pinMode(0, INPUT_PULLUP);    
  64.     pinMode(1, INPUT_PULLUP);    
  65.     pinMode(2, INPUT_PULLUP);
  66.     pinMode(3, INPUT_PULLUP);    
  67.     attachInterrupt(digitalPinToInterrupt(2), change_direction, FALLING );
  68.     attachInterrupt(digitalPinToInterrupt(3), manual_mode, FALLING );
  69.     EEPROM.get( eeAddress, max_step);
  70.  
  71. }
  72.  
  73. void loop() {
  74.            
  75.    
  76.             // re enable interrupts after time delay
  77.              if((long)(micros() - last_micros) >= debouncing_time * 1000) {
  78.               interrupts();
  79.               last_micros = micros();
  80.             }
  81.  
  82.  
  83.  
  84.   digitalWrite(9, state);
  85.   if(calibrate_level==0)
  86.   {
  87.             val = analogRead(A0);  //sebesseg szabalyzo
  88.             pot_read=val*10;
  89.  
  90.             if(mystop==false)
  91.             {
  92.                 lcd.setCursor(9, 0);
  93.                 lcd.print("Normal");
  94.                 motor_control(pot_read);
  95.                 if(digitalRead(0)==0)
  96.                 {
  97.                   lcd.clear();
  98.                   lcd.setCursor(0, 0);
  99.                   lcd.print("Wait...");
  100.                   calibrate_level=1;
  101.                   max_step-0;
  102.                 }
  103.                  
  104.             }
  105.            
  106.             else
  107.             {
  108.               //clear stuff
  109.               stepp=0;
  110.               lcd.clear();
  111.               lcd.print("Manual");
  112.               //if PIN0 is pressed go ahed
  113.               if(digitalRead(0)==0)
  114.                 {
  115.                       digitalWrite(8, HIGH);
  116.                       delayMicroseconds(pot_read);
  117.                       delayMicroseconds(pot_read);
  118.                       digitalWrite(8, LOW);
  119.                    
  120.                 }
  121.             }
  122.        
  123.    
  124.   }
  125.   else
  126.   {
  127.     noInterrupts();
  128.     digitalWrite(8, HIGH);
  129.     delayMicroseconds(500);
  130.     digitalWrite(8, LOW);
  131.     delayMicroseconds(500);
  132.     interrupts();
  133.     max_step=max_step+1;
  134.   }
  135.  
  136. }
  137.  
  138. void change_direction()
  139. {
  140.        noInterrupts();
  141.        delayMicroseconds(1000);
  142.        lcd.clear();
  143.      
  144.        state=!state;
  145.  
  146.        
  147.         if(calibrate_level==2)
  148.           {
  149.              
  150.             //save EEPROM
  151.             EEPROM.put(eeAddress, max_step);
  152.             calibrate_level=0;
  153.           }
  154.        
  155.         if(calibrate_level==1)
  156.         {
  157.           calibrate_level=2;
  158.           lcd.setCursor(0, 0);
  159.           lcd.print("Calibrating...");
  160.         }
  161. }
  162.  
  163. void manual_mode()
  164. {
  165.      noInterrupts();
  166.         lcd.clear();
  167.        mystop=!mystop;
  168.      
  169. }
(#) kapu48 válasza Szabi1 hozzászólására (») Szept 25, 2016 /
 
Itt a példa:
Multi-tasking the Arduino
Bővebben: Link 2.
Bővebben: Link 3.

Első minta példa delay alkalmazásával.
A többi tovább fejlesztett, multi_taskos alkalmazásra példa.
A hozzászólás módosítva: Szept 25, 2016
(#) sany hozzászólása Szept 25, 2016 /
 
Sziasztok!
A következő problémával fordulnék hozzátok.
Vásároltam egy Arduino UNO modult. A programzásával ismerkedek, de problémám adott.
A kód a következő:

  1. int randNumber;
  2. int led = 10;
  3. void setup() {}
  4.  
  5. void loop() {
  6.   randomSeed(millis());
  7.   randNumber = random(255);
  8.   analogWrite( led, randNumber);
  9.   delay(500);
  10. }


A kód lefordításakor hibaüzenetet kapok.

A hibaüzenet a következő:

collect2.exe: error: ld returned 1 exit status

error for complaint for Arduino board

De ha kitörlöm a delay(500) sort, akkor a fordítás sikerrel lefut. Mi lehet a probléma?

Köszönöm a segítséget!
Következő: »»   264 / 863
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