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   38 / 851
(#) TavIR-AVR válasza mikrokapcsolo hozzászólására (») Júl 19, 2014 /
 
Hogy melyik címen levő utasítás hajtódik végre.
Túlcsordul: eléred a chip végét és a 0. címről folytatódik.
(#) mikrokapcsolo válasza TavIR-AVR hozzászólására (») Júl 19, 2014 /
 
Értem, tehát ez nem befolyásolja végülis a program futását, ugye?
(#) Kovidivi hozzászólása Júl 20, 2014 /
 
Sziasztok!
Arduino Uno-ra írtam programot, 6 Lithium cella feszültségét mérem, amíg merítem őket, percenként, és ezt soros porton elküldöm a gépnek. Sajnos még nem érkezett meg a Board, addig csak a programmal (1.0.5-r2) tudtam ellenőriztetni, nem írt hibát.
  1. /*  Analoginput EXT1
  2.  60 nap alatt arduino tanfolyam alapján
  3.  (c) TavIR http://www.tavir.hu  */
  4.  
  5. /* módosítva kovidivi által */
  6. /*      2014.07.20         */
  7.  
  8. // analóg bemenetek beállítása
  9. int sensorPin0 = A0;
  10. int sensorPin1 = A1;
  11. int sensorPin2 = A2;
  12. int sensorPin3 = A3;
  13. int sensorPin4 = A4;
  14. int sensorPin5 = A5;
  15.    
  16. //beolvasott érték tárolása
  17. int sensorValue;
  18.  
  19. //átszámított feszültség
  20. double eredmeny;
  21.  
  22. void setup()
  23. {
  24.     //Hogy a PC-n olvashassuk az eredmenyt
  25.   Serial.begin(9600);
  26.   Serial.println("Start.");
  27.   Serial.println("Idő, 1.  2.  3.  4.  5.  6."); //Idő, és a cellák sorszámának elküldése
  28.  
  29. }
  30.  
  31. void loop() {
  32. analogReference(EXTERNAL); //TL431 2.5V -> 2,4414mV lépésköz
  33. //A cellák 10k-10k feszültség osztóval vannak az analóg
  34. // bemenetre kötve, 4,2V->2,1V, 3,0V->1,5V
  35. // értékek:               860         614
  36.     //beolvassuk az analog erteket
  37.  
  38. unsigned long time;
  39. time = millis();
  40. Serial.print(time);  //kezdeti idő elküldése
  41. Serial.print("  "); //tabulátor
  42.  
  43. sensorValue = analogRead(sensorPin0);
  44.   eredmeny = (sensorValue * 5)/1023;
  45.   Serial.print(eredmeny);
  46.   Serial.print("  ");
  47.  
  48.  sensorValue = analogRead(sensorPin1);
  49.   eredmeny = (sensorValue * 5)/1023;
  50.   Serial.print(eredmeny);
  51.   Serial.print("  ");
  52.  
  53. sensorValue = analogRead(sensorPin2);
  54.   eredmeny = (sensorValue * 5)/1023;
  55.   Serial.print(eredmeny);
  56.   Serial.print("  ");
  57.  
  58. sensorValue = analogRead(sensorPin3);
  59.   eredmeny = (sensorValue * 5)/1023;
  60.   Serial.print(eredmeny);
  61.   Serial.print("  ");
  62.  
  63. sensorValue = analogRead(sensorPin4);
  64.   eredmeny = (sensorValue * 5)/1023;
  65.   Serial.print(eredmeny);
  66.   Serial.print("  ");
  67.    
  68. sensorValue = analogRead(sensorPin5);
  69.   eredmeny = (sensorValue * 5)/1023;
  70.   Serial.println(eredmeny);
  71.  
  72. // kb. 1 perc várakozás
  73. for (long i = 0; i == 60; i++) {
  74.   delay(1000);                 }
  75.  
  76. }


Láttok benne esetleg valami hibát? A Soros-Monitorból át tudom majd másolni az adatokat Excelbe?
Még szeretnék rakni bele egy sípolót, ami jelez, ha valamelyik cella feszültsége túl alacsony.
Köszönöm
A hozzászólás módosítva: Júl 20, 2014
(#) varttina válasza Kovidivi hozzászólására (») Júl 20, 2014 /
 
Szia!
A kód jónak tűnik. A "for (long i = 0; i == 60; i++) {delay(1000); }" szerintem felesleges. A delay, ha jól tudom 2^16-1-ig paraméterezhető, szóval a 60000 még belefér.
Egyszerűbb dolgod lenne a Leonardo-val. Ott ugyanis lehetőség van billentyűzet emulálására, így akár közvetlenül az Excel táblázatba kerülhetnének a mért adatok.
A hozzászólás módosítva: Júl 20, 2014
(#) icserny válasza Kovidivi hozzászólására (») Júl 21, 2014 /
 
Ha Hyperterminált használsz, közvetlenül szöveges állományba lementhető a bejövő adatsor, amit egyszerű EXCEL-be importálni. Processing-ben pedig akár olyan programot is összeüthetsz, ami az adatok lementése mellett grafikusan is mutatja az eredményeket.
(#) kukuri hozzászólása Júl 21, 2014 /
 
Üdvözletem!

Van egy BMP180 szenzorom amivel a légköri nyomást lehet mérni. Letöltöttem hozzá a libet és látszólag működik is. A gondom annyi hogy meg kell adni a pontos magasságot ahhoz hogy közel jól mérjen. Ezt szeretném valahogy elkerülni. Én csak a nyomás pontos értékét szeretném lekérdezni. Van valakinek ötlete?

Próbáltan beállítani úgy hogy egy okostelóról lekértem a magassági adatot és ezt adtam meg a kódban. Ezután kerestem egy meterológiai állomást a neten. A két adatot összehasonlítva volt eltérés nem is kevés. Én mértem 1024-et, a neten pedig 1015 volt.

Magasságtól függetlenül tényleg csak a nyers nyomás értéket szeretném kiszedni.

A segítséget előre is köszönöm.
(#) icserny válasza kukuri hozzászólására (») Júl 21, 2014 /
 
Idézet:
„Magasságtól függetlenül tényleg csak a nyers nyomás értéket szeretném kiszedni.”

A bmp.readPressure(); pont ezt teszi, nemde?

(Az Adafruit_BMP085 könyvtárat használom)
(#) kzozo válasza kukuri hozzászólására (») Júl 21, 2014 /
 
A két érték között csak 9mbar van, ami nem is olyan rossz. Ha építesz két rendszert, egymás mellé téve azok sem fognak egyformát mérni.
(#) kukuri válasza kzozo hozzászólására (») Júl 21, 2014 /
 
Akkor ennyi hibatűrés lehet a pontosságában?
Még nem, kerestem rá hogy milyen időnél mekkora nyomás szokott lenne. Lehet hogy ez az eltérés akkor nem is sok? Ha jól számolom ez belefér egy +/- 1%-os hibatűrésbe.
(#) kukuri válasza icserny hozzászólására (») Júl 21, 2014 /
 
Én másik libet használok.
Erről az oldalról szedtem le. MBP180 lib
És itt is a következő példakódot tettem fel.
  1. /* SFE_BMP180 library example sketch
  2.  
  3. This sketch shows how to use the SFE_BMP180 library to read the
  4. Bosch BMP180 barometric pressure sensor.
  5. https://www.sparkfun.com/products/11824
  6.  
  7. Like most pressure sensors, the BMP180 measures absolute pressure.
  8. This is the actual ambient pressure seen by the device, which will
  9. vary with both altitude and weather.
  10.  
  11. Before taking a pressure reading you must take a temparture reading.
  12. This is done with startTemperature() and getTemperature().
  13. The result is in degrees C.
  14.  
  15. Once you have a temperature reading, you can take a pressure reading.
  16. This is done with startPressure() and getPressure().
  17. The result is in millibar (mb) aka hectopascals (hPa).
  18.  
  19. If you'll be monitoring weather patterns, you will probably want to
  20. remove the effects of altitude. This will produce readings that can
  21. be compared to the published pressure readings from other locations.
  22. To do this, use the sealevel() function. You will need to provide
  23. the known altitude at which the pressure was measured.
  24.  
  25. If you want to measure altitude, you will need to know the pressure
  26. at a baseline altitude. This can be average sealevel pressure, or
  27. a previous pressure reading at your altitude, in which case
  28. subsequent altitude readings will be + or - the initial baseline.
  29. This is done with the altitude() function.
  30.  
  31. Hardware connections:
  32.  
  33. - (GND) to GND
  34. + (VDD) to 3.3V
  35.  
  36. (WARNING: do not connect + to 5V or the sensor will be damaged!)
  37.  
  38. You will also need to connect the I2C pins (SCL and SDA) to your
  39. Arduino. The pins are different on different Arduinos:
  40.  
  41. Any Arduino pins labeled:  SDA  SCL
  42. Uno, Redboard, Pro:        A4   A5
  43. Mega2560, Due:             20   21
  44. Leonardo:                   2    3
  45.  
  46. Leave the IO (VDDIO) pin unconnected. This pin is for connecting
  47. the BMP180 to systems with lower logic levels such as 1.8V
  48.  
  49. Have fun! -Your friends at SparkFun.
  50.  
  51. The SFE_BMP180 library uses floating-point equations developed by the
  52. Weather Station Data Logger project: http://wmrx00.sourceforge.net/
  53.  
  54. Our example code uses the "beerware" license. You can do anything
  55. you like with this code. No really, anything. If you find it useful,
  56. buy me a beer someday.
  57.  
  58. V10 Mike Grusin, SparkFun Electronics 10/24/2013
  59. */
  60.  
  61. // Your sketch must #include this library, and the Wire library.
  62. // (Wire is a standard library included with Arduino.):
  63.  
  64. #include <SFE_BMP180.h>
  65. #include <Wire.h>
  66.  
  67. // You will need to create an SFE_BMP180 object, here called "pressure":
  68.  
  69. SFE_BMP180 pressure;
  70.  
  71. #define ALTITUDE 1655.0 // Altitude of SparkFun's HQ in Boulder, CO. in meters
  72.  
  73. void setup()
  74. {
  75.   Serial.begin(9600);
  76.   Serial.println("REBOOT");
  77.  
  78.   // Initialize the sensor (it is important to get calibration values stored on the device).
  79.  
  80.   if (pressure.begin())
  81.     Serial.println("BMP180 init success");
  82.   else
  83.   {
  84.     // Oops, something went wrong, this is usually a connection problem,
  85.     // see the comments at the top of this sketch for the proper connections.
  86.  
  87.     Serial.println("BMP180 init fail\n\n");
  88.     while(1); // Pause forever.
  89.   }
  90. }
  91.  
  92. void loop()
  93. {
  94.   char status;
  95.   double T,P,p0,a;
  96.  
  97.   // Loop here getting pressure readings every 10 seconds.
  98.  
  99.   // If you want sea-level-compensated pressure, as used in weather reports,
  100.   // you will need to know the altitude at which your measurements are taken.
  101.   // We're using a constant called ALTITUDE in this sketch:
  102.  
  103.   Serial.println();
  104.   Serial.print("provided altitude: ");
  105.   Serial.print(ALTITUDE,0);
  106.   Serial.print(" meters, ");
  107.   Serial.print(ALTITUDE*3.28084,0);
  108.   Serial.println(" feet");
  109.  
  110.   // If you want to measure altitude, and not pressure, you will instead need
  111.   // to provide a known baseline pressure. This is shown at the end of the sketch.
  112.  
  113.   // You must first get a temperature measurement to perform a pressure reading.
  114.  
  115.   // Start a temperature measurement:
  116.   // If request is successful, the number of ms to wait is returned.
  117.   // If request is unsuccessful, 0 is returned.
  118.  
  119.   status = pressure.startTemperature();
  120.   if (status != 0)
  121.   {
  122.     // Wait for the measurement to complete:
  123.     delay(status);
  124.  
  125.     // Retrieve the completed temperature measurement:
  126.     // Note that the measurement is stored in the variable T.
  127.     // Function returns 1 if successful, 0 if failure.
  128.  
  129.     status = pressure.getTemperature(T);
  130.     if (status != 0)
  131.     {
  132.       // Print out the measurement:
  133.       Serial.print("temperature: ");
  134.       Serial.print(T,2);
  135.       Serial.print(" deg C, ");
  136.       Serial.print((9.0/5.0)*T+32.0,2);
  137.       Serial.println(" deg F");
  138.      
  139.       // Start a pressure measurement:
  140.       // The parameter is the oversampling setting, from 0 to 3 (highest res, longest wait).
  141.       // If request is successful, the number of ms to wait is returned.
  142.       // If request is unsuccessful, 0 is returned.
  143.  
  144.       status = pressure.startPressure(3);
  145.       if (status != 0)
  146.       {
  147.         // Wait for the measurement to complete:
  148.         delay(status);
  149.  
  150.         // Retrieve the completed pressure measurement:
  151.         // Note that the measurement is stored in the variable P.
  152.         // Note also that the function requires the previous temperature measurement (T).
  153.         // (If temperature is stable, you can do one temperature measurement for a number of pressure measurements.)
  154.         // Function returns 1 if successful, 0 if failure.
  155.  
  156.         status = pressure.getPressure(P,T);
  157.         if (status != 0)
  158.         {
  159.           // Print out the measurement:
  160.           Serial.print("absolute pressure: ");
  161.           Serial.print(P,2);
  162.           Serial.print(" mb, ");
  163.           Serial.print(P*0.0295333727,2);
  164.           Serial.println(" inHg");
  165.  
  166.           // The pressure sensor returns abolute pressure, which varies with altitude.
  167.           // To remove the effects of altitude, use the sealevel function and your current altitude.
  168.           // This number is commonly used in weather reports.
  169.           // Parameters: P = absolute pressure in mb, ALTITUDE = current altitude in m.
  170.           // Result: p0 = sea-level compensated pressure in mb
  171.  
  172.           p0 = pressure.sealevel(P,ALTITUDE); // we're at 1655 meters (Boulder, CO)
  173.           Serial.print("relative (sea-level) pressure: ");
  174.           Serial.print(p0,2);
  175.           Serial.print(" mb, ");
  176.           Serial.print(p0*0.0295333727,2);
  177.           Serial.println(" inHg");
  178.  
  179.           // On the other hand, if you want to determine your altitude from the pressure reading,
  180.           // use the altitude function along with a baseline pressure (sea-level or other).
  181.           // Parameters: P = absolute pressure in mb, p0 = baseline pressure in mb.
  182.           // Result: a = altitude in m.
  183.  
  184.           a = pressure.altitude(P,p0);
  185.           Serial.print("computed altitude: ");
  186.           Serial.print(a,0);
  187.           Serial.print(" meters, ");
  188.           Serial.print(a*3.28084,0);
  189.           Serial.println(" feet");
  190.         }
  191.         else Serial.println("error retrieving pressure measurement\n");
  192.       }
  193.       else Serial.println("error starting pressure measurement\n");
  194.     }
  195.     else Serial.println("error retrieving temperature measurement\n");
  196.   }
  197.   else Serial.println("error starting temperature measurement\n");
  198.  
  199.   delay(5000);  // Pause for 5 seconds.
  200. }
(#) kukuri válasza icserny hozzászólására (») Júl 21, 2014 /
 
Az adatok egy szerverre kerülnek fel. Lessz egy DHT22 szenzor is mellette. Így már a hőmérséklet páratartalom és a légnyomás adatok is felkerülnek.
SQL-ből meg már tudok grafikonokat rajzolni ami csak kell.
(#) icserny válasza kukuri hozzászólására (») Júl 21, 2014 /
 
A különbség nagyjából az, hogy az általad használt könyvtárban van egy sealevel() metódus is, annak a használatához kell a magasság. Ha nem hívod meg, akkor nincs szükség a magasság ismeretére. Nálad a pressure.getPressure(P,T); adja meg a nyomás abszolút értékét.
(#) kukuri válasza kukuri hozzászólására (») Júl 21, 2014 /
 
Megkerestem az adatlapot.
Itt a következők vannak: BMP180 adatlap
+/- 0.12 hPa
+/- 1.0 m

Ha jól gondolom az 1% jóval több mint a megengedett.

Az járható út hogy egy fix értéket mindig elveszek belőle? Vagy beteszek egy szorzót korrekciónak?
(#) kzozo válasza kukuri hozzászólására (») Júl 21, 2014 /
 
A 0.12 hPa az egyenlő 0.12 mbar-ral, ami igen jó pontosság.
(#) kukuri válasza kzozo hozzászólására (») Júl 21, 2014 /
 
Az igaz. Nálam 9mbar az eltérés. Tehát lényegesen több a megengedettnél.
Ha tudom megnézem hogy melyik fgv írja ki az értéket. Gyanús hogy a pressure.altitude(P,p0); meg csak 1003 volt. Ezt lehet csak éjszaka tudom ellenőrizni.
(#) silent15 hozzászólása Júl 22, 2014 /
 
Sziasztok, olyan kérdéssel fordulnék hozzátok, hogy egy 328-al szerelt Nano panelt szeretnék SD kártya modulra kötni.
Az Ardunio CardInfo mintályát szeretném használni. Feltöltöttem a programot, de mindíg sikertelen az inicializálás.
Bekötésem;
Arduino SD module
D4 CS
D11 MOSI
D12 MISO
D13 SCK
Tápot is kötöttem. Az arduino-ról szedtem le az 5V-ot és a GND-t is.
A kártyát leformáztam, a gépem tökéletesen látja.
(#) david10 válasza silent15 hozzászólására (») Júl 22, 2014 /
 
FAT-ra formaztad?Nalam mar az autos virtualis CD-tar csinalt olyant,hogy FAT-ra volt formazva es FAT32 kellet
(#) silent15 válasza david10 hozzászólására (») Júl 22, 2014 /
 
FAT-ra volt formázva, most átformáztam FAT32-ra, de így sem jó
(#) ISF79 válasza silent15 hozzászólására (») Júl 22, 2014 /
 
Mekkora az SD kártya? Próbálkozz 2Gb-nál kisebbel, ha most nagyobbat használsz.
(#) silent15 válasza ISF79 hozzászólására (») Júl 22, 2014 /
 
Erre is gondoltam, itthon a legkissebb amit találtam az 128Mb-volt, most azt használom.
A hozzászólás módosítva: Júl 22, 2014
(#) silent15 válasza (Felhasználó 15355) hozzászólására (») Júl 23, 2014 /
 
Kicseréltem, de így sem jó :S
(#) TavIR-AVR válasza silent15 hozzászólására (») Júl 23, 2014 /
 
Az SD kártya 3.3V-os, azt I/O részek is!
Direkt bekötve az 5V-ra nem működnek!

A Chipselect kiválasztás a gyári mintában _hibás_.
A chipselect és az Output definíció _is_ kell!. Persze mind a CS lábra mutasson. Az output az a 10-es lábra (SS) hivatkozik eredetileg!
(#) silent15 válasza TavIR-AVR hozzászólására (») Júl 23, 2014 /
 
SZia, ezeket a deffiníciókat hogy írjam bele? Másik kérdésem, amit linkeltem panelt, azon van 3,3V os stab. Ki is mértem, a 3,3V megvan, hogy érted, hogy direktbe kötve nem működik?
(#) magitor válasza Kovidivi hozzászólására (») Júl 24, 2014 /
 
Itt van kicsit átgondolva engedelmeddel, a sípolás is beletettem, a tabulátorokat cseréltem igazi tabulátorra, illetve a delayes várást átírtam.
Viszont kérlek ellenőrizd le, kicsit korán írtam meg, és nem tudtam unon leellenőrizni.

  1. /*  Analoginput EXT1
  2.  60 nap alatt arduino tanfolyam alapján
  3.  (c) TavIR http://www.tavir.hu ; */
  4.  
  5. /* módosítva kovidivi által */
  6. /*      2014.07.20         */
  7.  
  8. // analóg bemenetek beállítása
  9. int sensorPin0 = A0;
  10. int sensorPin1 = A1;
  11. int sensorPin2 = A2;
  12. int sensorPin3 = A3;
  13. int sensorPin4 = A4;
  14. int sensorPin5 = A5;
  15. int SPKR= 3; //PWM lábnak kell lennie!
  16. //beolvasott érték tárolása
  17. int sensorValue;
  18.  
  19. //átszámított feszültség
  20. double eredmeny;
  21. long interval = 60000; //ms ben megadott idő, mivel itt számolja az időt így "nincsen" korlátja
  22. void setup()
  23. {
  24.   //Hogy a PC-n olvashassuk az eredmenyt
  25.   Serial.begin(9600);
  26.   Serial.println("Start.");
  27.   Serial.println("Idő,/t1./t2./t3./t4./t5./t6."); //Idő, és a cellák sorszámának elküldése /t tabaltúra.
  28.   pinMode(SPKR, OUTPUT);
  29. }
  30.  
  31. void beep(double be){ //sípolás
  32.   if (be< 2.5)
  33.   {
  34.     digitalWrite(SPKR, HIGH); //turn the speaker on
  35.     delay(500);                     //wait for half a second
  36.     digitalWrite(SPKR, LOW); //turn the speaker off
  37.     delay(500);  
  38.   }
  39. }
  40.  
  41. void loop() {
  42.   analogReference(EXTERNAL); //TL431 2.5V -> 2,4414mV lépésköz
  43.   //A cellák 10k-10k feszültség osztóval vannak az analóg
  44.   // bemenetre kötve, 4,2V->2,1V, 3,0V->1,5V
  45.   // értékek:               860         614
  46.   //beolvassuk az analog erteket
  47.   unsigned long currentMillis = millis(); //időszámlálónak, külön tettem hogy ne nullázza a mért időt
  48.   unsigned long time=0, previousMillis=0;
  49.   time = millis();
  50.   Serial.print(time);  //kezdeti idő elküldése
  51.   Serial.print("/t"); //tabulátor
  52.   if(currentMillis - previousMillis > interval)
  53.   {
  54.     previousMillis = currentMillis;
  55.  
  56.     sensorValue = analogRead(sensorPin0);
  57.     eredmeny = (sensorValue * 5)/1023;
  58.     Serial.print(eredmeny);
  59.     Serial.print("/t");
  60.     beep(eredmeny);
  61.  
  62.     sensorValue = analogRead(sensorPin1);
  63.     eredmeny = (sensorValue * 5)/1023;
  64.     Serial.print(eredmeny);
  65.     Serial.print("/t");
  66.     beep(eredmeny);
  67.  
  68.     sensorValue = analogRead(sensorPin2);
  69.     eredmeny = (sensorValue * 5)/1023;
  70.     Serial.print(eredmeny);
  71.     Serial.print("/t");
  72.     beep(eredmeny);
  73.  
  74.     sensorValue = analogRead(sensorPin3);
  75.     eredmeny = (sensorValue * 5)/1023;
  76.     Serial.print(eredmeny);
  77.     Serial.print("/t");
  78.     beep(eredmeny);
  79.  
  80.     sensorValue = analogRead(sensorPin4);
  81.     eredmeny = (sensorValue * 5)/1023;
  82.     Serial.print(eredmeny);
  83.     Serial.print("/t");
  84.     beep(eredmeny);
  85.  
  86.     sensorValue = analogRead(sensorPin5);
  87.     eredmeny = (sensorValue * 5)/1023;    
  88.     Serial.println(eredmeny);
  89.     beep(eredmeny);
  90.  
  91.     // kb. 1 perc várakozás
  92.   }
  93.  
  94. }
A hozzászólás módosítva: Júl 24, 2014
(#) icserny válasza silent15 hozzászólására (») Júl 24, 2014 /
 
Idézet:
„hogy érted, hogy direktbe kötve nem működik?”
Úgy, hogy a digitális I/O jelszintek sem stimmelnek: az Arduino 5 V körüli kimenőjele esetleg megárthat az SD kártyának, vagy fordítva: az SD kártya 3,3 V körüli kimenőjele túl alacsony ahhoz, hogy az Arduino magas szintnek érzékelje.

A képen látható kártyán például minden adatvonalnál egy-egy szintillesztő található, ami megoldja ezt a problámát.
(#) icserny válasza (Felhasználó 15355) hozzászólására (») Júl 24, 2014 /
 
Idézet:
„Nincs rajta ellenállásosztó?”
Miért is volna?
(#) silent15 válasza (Felhasználó 15355) hozzászólására (») Júl 24, 2014 /
 
Ahogy nézem nincs rajta ellenállásosztó ,azok csak felhúzó ellenállások.
Kép
Esetleg, megpróbálnám a szintillesztést, mivel lehetne a legegyszerűbben megoldani?
A hozzászólás módosítva: Júl 24, 2014
(#) ISF79 hozzászólása Júl 24, 2014 /
 
Sziasztok!

Arduino + MCP 41010 digitális potméterrel akadtam el.
Tesztelném SPI-n, de akármekkora értéket küldök neki, mindig csak középértéken marad a kimenete az MCP41010-nek (512).
Mellékelem a bekötést, adatlapot, kódot. Nem tudom mi a hiba.
Bekötésben annyi a különbség, hogy led helyett A0-ra van bekötve a PW0, hogy lássam milyen értéket kapok.

MCP adatlap

  1. #include <SPI.h>
  2.  
  3. int csPin = 10;
  4. int sensorPin = A0;
  5. int sensorValue = 0;
  6.  
  7. void setup()
  8. {
  9.   SPI.begin();
  10.   Serial.begin(9600);
  11.   pinMode(csPin, OUTPUT);
  12. }
  13.  
  14. void loop()
  15. {
  16.   sensorValue = analogRead(sensorPin);
  17.   Serial.println(sensorValue);
  18.   SPI.transfer(0);
  19.   SPI.transfer(100);  //bármilyen értéket adok meg, 512 marad.
  20.   delay(100);
  21.  
  22. }
(#) icserny válasza ISF79 hozzászólására (») Júl 24, 2014 /
 
Az SPI.transfer() előtt és után neked kell beállítani csPin értékét (gondolom, előtte lehúzni, utána felhúzni). Így most az eszköz nem érzi magát megszólítva, ezért nem reagál.
(#) ISF79 válasza icserny hozzászólására (») Júl 24, 2014 /
 
Szia, próbáltam úgy is, de ugyanúgy középértéken marad a kimenet.

  1. void loop()
  2. {
  3.   sensorValue = analogRead(sensorPin);
  4.   Serial.println(sensorValue);
  5.   digitalWrite(csPin, LOW);
  6.   SPI.transfer(0);
  7.   SPI.transfer(200);  //bármilyen értéket adok meg, 512 marad.
  8.   digitalWrite(csPin, HIGH);
  9.   delay(100);
  10.  
  11. }
Következő: »»   38 / 851
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