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   845 / 845
(#) GPeti1977 válasza Unfi hozzászólására (») Júl 3, 2024 / 1
 
Csak analóg láb, se bemenet sem kimenet nem lehet
(#) Unfi válasza GPeti1977 hozzászólására (») Júl 3, 2024 /
 
Köszönöm.
(#) Rober_4 hozzászólása Júl 7, 2024 /
 
Sziasztok!
Ezt a billentyűmátrixot szeretném vezérelni egy Arduino Nanoval.
D10-D13 lábakon címezgetem
A lenyomott billentyűk bájtját D2-D9-ig kapnám.
A fenti kód kicsit összevissza adja vissza a lenyomott billentyűket. Gondolkodom azon, hogy esetleg a bemeneteket le kellene húznom alacsony szintre valamilyen ellenállással. Minden ötletet szívesen fogadok!
  1. void setup() {
  2.   // Set MIDI baud rate:
  3.   //Serial.begin(38400);
  4.    Serial.begin(31250);
  5.  
  6.  
  7.   pinMode(10, OUTPUT);
  8.   pinMode(11, OUTPUT);
  9.   pinMode(12, OUTPUT);
  10.   pinMode(13, OUTPUT);
  11.  
  12.   Serial.print("end output\n");
  13.   pinMode(2, INPUT);
  14.   pinMode(3, INPUT);
  15.   pinMode(4, INPUT);
  16.   pinMode(5, INPUT);
  17.   pinMode(6, INPUT);
  18.   pinMode(7, INPUT);
  19.   pinMode(8, INPUT);
  20.   pinMode(9, INPUT);
  21.  
  22.   Serial.print("end input\n");
  23. }
  24.  
  25. void loop() {
  26.  
  27.   Serial.print("scan\n");
  28.   for (int i = 10; i <= 13 ; i++)
  29.   {
  30.     digitalWrite(10, LOW);//28
  31.     digitalWrite(11, LOW);//30
  32.     digitalWrite(12, LOW); //32
  33.     digitalWrite(13, LOW);
  34.     digitalWrite(i, HIGH);
  35.    
  36.     if (digitalRead(2)) //21. láb
  37.     {
  38.       String a = String(i * 4 + 0);
  39.       Serial.print(a + " ");
  40.     }
  41.  
  42.     if (digitalRead(3)) //23. láb
  43.     {
  44.       String a = String(i * 4 + 1);
  45.       Serial.print(a + " ");
  46.     }
  47.  
  48.     if (digitalRead(4)) //25. láb
  49.     {
  50.       String a = String(i * 4 + 2);
  51.       Serial.print(a + " ");
  52.     }
  53.  
  54.  
  55.     if (digitalRead(5)) //27. láb
  56.     {
  57.       String a = String(i * 4 + 3);
  58.       Serial.print(a + " ");
  59.     }
  60.     if (digitalRead(6)) //27. láb
  61.     {
  62.       String a = String(i * 4 + 4);
  63.       Serial.print(a + " ");
  64.     }
  65.     if (digitalRead(7)) //27. láb
  66.     {
  67.       String a = String(i * 4 + 5);
  68.       Serial.print(a + " ");
  69.     }
  70.     if (digitalRead(8)) //27. láb
  71.     {
  72.       String a = String(i * 4 + 6);
  73.       Serial.print(a + " ");
  74.     }
  75.    
  76.     if (digitalRead(9)) //27. láb
  77.     {
  78.       String  a = String(i * 4 + 7);
  79.       Serial.print(a + " ");
  80.     }
  81. }
(#) wbt hozzászólása Júl 9, 2024 /
 
Sziasztok!
Egy 0-20mA/0-10V leválasztott I/O shield-et kellene szobornom. Mivel sülthal vagyok az arduinohoz meg a hideg ráz a C++-tól, a szakiktól kérdezném, milyen portokra érdemes rakni a 4db optocsatolós kimenetet és egy darab visszajelző (hiba, ha a fesz. zárlatos vagy az áram nyitott) bitet? Mi lenne a kívánság, gondolom az HW-SPI adja magát, csak ki-hogyan szokta meg (főleg, aki ismer más shield-eket, nehogy alapból ütközzek vele). Aki ismeri a libeket, hogy egyből használni is tudja, ne okozzon gondot a portolása stb. (most oda kötöm, ahova akarom...akarják...)
(#) kapu48 válasza Rober_4 hozzászólására (») Júl 12, 2024 / 1
 
Szia!
Először a gombokat kellen rendbe tenni!
Lehúzók kellenének legalább 10K-sak, hogy ne szedjenek zajt össze a vezetékek.
És a gombok prellezését is nagymértékben csillapítja a két pólusukra kötött 100n kerámia kondi.
(#) GPeti1977 válasza wbt hozzászólására (») Júl 12, 2024 /
 
Miért nem veszel készen ha nem tudod elkészíteni?
(#) wbt válasza GPeti1977 hozzászólására (») Júl 12, 2024 /
 
El tudom, csak oda kötöm, ahova akarom, a "szokást" vagy "jobb lenne" dologra kérdeztem rá, de akkor úgy látszik, minden-mindegy... készen nem találtam ilyen shieldet.
(#) pipi válasza wbt hozzászólására (») Júl 12, 2024 /
 
Hali! Azt sem írtad, hogy kimenetként, vagy bemenetként kellene kezelned...
milyen célból kell ha már kizárod az arduinót is meg a c++-t is?
(#) GPeti1977 válasza wbt hozzászólására (») Júl 12, 2024 /
 
Inkább nézd meg az apróhirdetéseket itt.
(#) robis01 válasza Rober_4 hozzászólására (») Júl 13, 2024 /
 
Esetleg valami matrix ic? pl TM1638, könyvtár is van hozzá.
(#) Rober_4 válasza kapu48 hozzászólására (») Júl 13, 2024 /
 
Köszi a választ!
Sajnos nem kaptam 8-as buszlehúzó ellenállást, de beforrasztottam 8db 4,7kOhmos ellenállást és jó lett. Igen le kellett húzni a testre. Érdekes, hogy chatGPT-nek is én magyaráztam el mi a probléma, mire ugyanazt mondta, és használhatatlan kódokat dobott. Most ezzel a kóddal szépen küldi a MIDI-t a kis Casio:
  1. bool note[128];
  2. byte trans = 48;
  3. String NOTENAME[14] = {"C", "CISZ", "D", "DISZ", "E", "F", "FISZ", "G", "GISZ", "A", "B", "H"};
  4. void setup() {
  5.   for (int i = 0; i < 128; i++)
  6.   {
  7.     note[i] = false;
  8.   }
  9.   // Set MIDI baud rate:
  10.   //Serial.begin(38400);
  11.   Serial.begin(31250);
  12.  
  13.  
  14.   pinMode(10, OUTPUT);
  15.   pinMode(11, OUTPUT);
  16.   pinMode(12, OUTPUT);
  17.   pinMode(13, OUTPUT);
  18.  
  19. //  Serial.print("end output\n");
  20.   pinMode(2, INPUT);
  21.   pinMode(3, INPUT);
  22.   pinMode(4, INPUT);
  23.   pinMode(5, INPUT);
  24.   pinMode(6, INPUT);
  25.   pinMode(7, INPUT);
  26.   pinMode(8, INPUT);
  27.   pinMode(9, INPUT);
  28.  
  29.  // Serial.println("end input");
  30. }
  31.  
  32. void loop() {
  33.  
  34.   //Serial.println("scan\n");
  35.   for (byte i = 10; i <= 13 ; i++)
  36.   {
  37.     digitalWrite(10, LOW);
  38.     digitalWrite(11, LOW);
  39.     digitalWrite(12, LOW);
  40.     digitalWrite(13, LOW);
  41.     digitalWrite(i, HIGH);
  42.  
  43.     for (byte j = 2; j <= 9 ; j++)
  44.     {
  45.       byte a = ((i - 10) * 8) + (j - 2);
  46.      // Serial.println(String(i)+" "+String(j)+" "+String(a));
  47.       if (digitalRead(j))
  48.       {
  49.         if (!note[trans + a]) {
  50.          // Serial.print(a);        
  51.          // Serial.print(NOTENAME[a%12] + String(a / 12) + " ON");
  52.           noteOn(0x90, trans + a, 127);
  53.           note[trans + a] = true;
  54.         }
  55.       } else {
  56.  
  57.         if (note[trans + a]) {
  58.           //Serial.print(a);
  59.           //Serial.print(NOTENAME[a%12] + String(a / 12) + " OFF");
  60.           noteOn(0x80, trans + a, 127);
  61.           note[trans + a ] = false;
  62.         }
  63.       }
  64.     }
  65.   }
  66. }
  67.  
  68. void noteOn(int cmd, int pitch, int velocity) {
  69.   Serial.write(cmd);
  70.   Serial.write(pitch);
  71.   Serial.write(velocity);
  72. }
A hozzászólás módosítva: Júl 13, 2024
(#) sargarigo válasza Rober_4 hozzászólására (») Júl 13, 2024 / 1
 
Idézet:
„, és használhatatlan kódokat dobott.”


Fenntartással kell kezelni! Ötleteket tud adni hiszen sokkal nagyobb merítéssel rendelkezik mint mi, de kész kódot nem érdemes várni tőle.
Részfeladatokkal kell megbízni, azzal elég jól elboldogul. Az alkalmazása már a fejlesztő dolga.
(#) wbt válasza pipi hozzászólására (») Júl 13, 2024 /
 
Szia! Ez most elsőnek áram/fesz kimenet lenne, de van teljes analóg I/O. Nem zárom ki a C++-t meg Arduinot, csak én nem használom (így). Azért kérdeztem, hova érdemes kötni egy SPI-s eszközt, mert (ebben biztos vagyok) majd megkérdezik, miért épp oda van kötve, mikor a pl. gomb/kijelző shield is azt használja... Meg tapasztalatom szerint, ha nem stimmel valami egy valahonnan letöltött lib használatával, sokaknál megáll az élet. Csak ezért bátorkodtam rákérdezni, mert most mindegy (nekem), de ha a Tisztelt Felhasználónak más a kérése, akkor azt kapja. Ugyebár pont az SCK-n van a LED, amit szeretnek villogtatni, na, ez HW SPI-nél már "ütközés". Hisztiznek
(#) wbt válasza GPeti1977 hozzászólására (») Júl 13, 2024 /
 
Szia! Hol?
(#) pipi válasza wbt hozzászólására (») Júl 13, 2024 /
 
Az spi lényege hogy több eszköz lehet egy buszon, és eszközönként a saját CS jelükkel tudod kiválasztani kivel beszélgetsz
(#) pavikpeter hozzászólása Júl 14, 2024 /
 
Tíz -vagy annál több - biten ábrázolható számot szeretnék átküldeni egyik Nanoról a másikra harveres soros porton. Ezen a fórumbejegyzésen van egy válasz PieterP-től ami alapján elindultam.

Nálam így néz ki az ide tartozó kódrészlet adóoldalon:

  1. optoStateNew = digitalRead(optoIn);                            
  2.         if (optoStateNew == true && optoStateNew != optoStateOld){  
  3.           numToDisplay++;
  4.          
  5.             uint8_t LSB = numToDisplay;
  6.             uint8_t MSB = (numToDisplay >> 8 );
  7.             Serial.write(MSB);      
  8.             Serial.write(LSB);
  9. // további programsorok....
  10.          }


vevőoldalon:
  1. if(Serial.available()>1) {
  2.     uint8_t MSB = Serial.read();
  3.     uint8_t LSB = Serial.read();
  4.     int numToDisplay  = (MSB << 8) | LSB;
  5.   }
  6.   Display.setNumber(numToDisplay);
  7.   Display.refreshDisplay();


Az a gondom, hogy mintha a vevő oldali if... feltétel nem teljesülne ezért nem történik meg a numToDisplay változó frissítése annak ellenére, hogy az adó Nano Tx lábán szkóppal látszik mindkét kiküldőtt bájt.

Hogyan tudnék végére járni ennek a problémának?
(#) sargarigo válasza pavikpeter hozzászólására (») Júl 14, 2024 /
 
Én a vevő oldali konverziót elhagynám első körben, és konzolra íratnám a nyers fogadott bájtokat. Így kiderül hogy a vezérlő rendben megkapja-e az adatokat, és kizárhatjuk a hardveres hibákat. Ha itt jó, akkor lehet tovább menni.
A hozzászólás módosítva: Júl 14, 2024
(#) sargarigo válasza sargarigo hozzászólására (») Júl 14, 2024 /
 
Nem az a baj! A numtodisplay az if blokkon belül van lokális valtozóként létrehozva! Amikor kilépsz a blokkból, akkor megsemmisül, te meg utána akarod kiíratni! Nem is értem hogy a fordító miért nem kiabált? Gondolom valahol fentebb már létrehoztad, és ezt fedted el a blokkon belül az újjal. Szedd ki az "int"-et előle, és jó lesz! Szerintem.
(#) pavikpeter válasza sargarigo hozzászólására (») Júl 14, 2024 /
 
Ez volt a megoldás, köszönöm.
(#) sargarigo válasza pavikpeter hozzászólására (») Júl 14, 2024 /
 
Szuper! Örülök!
(#) zaza99 hozzászólása Sze, 11:56 /
 
Sziasztok!

Okosmérőhöz szeretnék wifis kiolvasót kötni, meg is van hozzá minden csak nem tudom felprogramozni.
alaplap : wemos mini D1
program: esp8266_p1meter

A könyvtárak telepítésénélvan hiba mindíg.

tudnátok segíteni?
A hozzászólás módosítva: Sze, 11:57
(#) Jonni válasza zaza99 hozzászólására (») Sze, 12:51 /
 
Első ránézésre egy könyvtárat hiányol. wl_definitions.h
(#) zaza99 válasza Jonni hozzászólására (») Sze, 12:53 /
 
Aztóa már beadtam neki, de sorba kéri a különböző könyvtárakat már vagy a 20-nál tartok.
(#) lalca válasza zaza99 hozzászólására (») Sze, 15:15 / 1
 
1.8-as ide-vel lefordul.
Következő: »»   845 / 845
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