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   765 / 850
(#) GPeti1977 válasza asch hozzászólására (») Jan 24, 2023 / 1
 
Nekem véletlen sikerült arduinopromicro-val olyan USB módot kreálni (joystick egér összvér) ami az egeret pozícióra viszi.
(#) Massawa válasza GPeti1977 hozzászólására (») Jan 24, 2023 /
 
Na ez jo hir, örülnék ha megosztanál némi részletet.
(#) GPeti1977 válasza Massawa hozzászólására (») Jan 24, 2023 /
 
  1. #include "Joystick.h"
  2. #include <EEPROM.h>
  3. Joystick_ Joystick(JOYSTICK_DEFAULT_REPORT_ID,JOYSTICK_TYPE_MOUSEJOY,
  4.   2, 0,                  // Button Count, Hat Switch Count
  5.   true, true, false,     // X and Y, but no Z Axis
  6.   false, false, false,   // No Rx, Ry, or Rz
  7.   false, false,          // No rudder or throttle
  8.   false, false, false);  // No accelerator, brake, or steering
  9.   byte bt = 1;
  10.   byte bt1 = 1;
  11.  
  12.   int x = 128;
  13.   int y = 128;
  14.  
  15. void setup() {
  16.  pinMode(9, INPUT);
  17.  pinMode(8, INPUT_PULLUP);
  18.  pinMode(7, INPUT_PULLUP);
  19.  pinMode(6, INPUT_PULLUP);
  20.  pinMode(5, INPUT_PULLUP);
  21.  pinMode(4, INPUT_PULLUP);
  22.  Joystick.begin();
  23.  Joystick.setXAxisRange(-255, 255);
  24.  Joystick.setYAxisRange(-255, 255);
  25.  byte f = EEPROM.read(0);
  26.  if(f != 255){
  27.  x = EEPROM.read(1);
  28.  y = EEPROM.read(2);
  29.  }
  30. }
  31.  
  32. void loop() {
  33.   if(digitalRead(4) == LOW && x > 8){
  34.     x--;
  35.     Joystick.setXAxis(x);
  36.     Joystick.setYAxis(y);
  37.     delay(50);
  38.   }
  39.   if(digitalRead(5) == LOW && x < 248){
  40.     x++;
  41.     Joystick.setXAxis(x);
  42.     Joystick.setYAxis(y);
  43.     delay(50);
  44.   }
  45.   if(digitalRead(6) == LOW && y > 8){
  46.     y--;
  47.     Joystick.setXAxis(x);
  48.     Joystick.setYAxis(y);
  49.     delay(50);
  50.   }
  51.   if(digitalRead(7) == LOW && y < 248){
  52.     y++;
  53.     Joystick.setXAxis(x);
  54.     Joystick.setYAxis(y);
  55.     delay(50);
  56.   }
  57.  
  58.   if(digitalRead(8) == HIGH)bt1 = 0;
  59.   delay(1);
  60.   if(digitalRead(8) == LOW && bt1 == 0){
  61.     bt1 = 1;
  62.      EEPROM.write(0, 0);
  63.      EEPROM.write(1, x);
  64.      EEPROM.write(2, y);
  65.      delay(1000);
  66.   }
  67.  
  68.   if(digitalRead(9) == LOW)bt = 0;
  69.    delay(1);
  70.   if(digitalRead(9) == HIGH && bt == 0){
  71.     bt = 1;
  72.    Joystick.setXAxis(x);
  73.    Joystick.setYAxis(y);
  74.    delay(1);
  75.    Joystick.setButton(0, HIGH);
  76.    delay(100);
  77.    Joystick.setButton(0, LOW);
  78.    delay(3000);
  79.   }
  80.  
  81.   delay(1);
  82.  
  83. }


Van egy érintőgomb ami megérintésre pozícióra ugrik, majd bal egér gombot nyom, a koordinátákat eepromban van tárolva, 5 gombbal lehet betanítani a pozíciót.
DynamicHID.cpp DynamicHID.h Joystick.cpp Joystick.h
kell a működéséhez.
Később felrakom one drive ra, mert lehet a driverekben is módosítottam valamit.
A hozzászólás módosítva: Jan 24, 2023
(#) hadhazik hozzászólása Jan 24, 2023 /
 
Az alábbi kódban egy lcd gombokkal végzi a kalibrálást.
Hogyan kellene átírni a gomb funkciókat egy érintőképernyőn létrehozott gombokra?

[code=c][/
/* 0.1- Button Function */

int buttonRead;
buttonRead = analogRead (0); // Read analog pin A0. Pin A0 automatically assigned for LCD Display Button function (cannot be changed)
currentButtonMillis = millis();

if(currentButtonMillis - startButtonMillis >= 300)
{

/*Right button is pressed */
if (buttonRead < 60)
{ LCD.setCursor(0,0); LCD.print ("PRESS <SELECT> ");
LCD.setCursor(0,1); LCD.print ("TO CALLIBRATE ");}

/* Up button is pressed */
if (buttonRead < 200 && buttonRead > 60) // Press up button to go to upper page
{
page = page - 1 ;
if( page <=0)
{ page = 1;}
startButtonMillis = millis();
}

/* Down button is pressed */
if (buttonRead < 400 && buttonRead > 200) // Press down button to go to lower page
{
page = page + 1;
if (page >3)
{ page = 3; }
startButtonMillis = millis();
}

/* Left button is pressed */
if (buttonRead < 600 && buttonRead >400)
{ LCD.setCursor(0,0); LCD.print ("PRESS <SELECT> ");
LCD.setCursor(0,1); LCD.print ("TO CALLIBRATE ");}

/* Select button is pressed */
if (buttonRead < 800 && buttonRead > 600)
{
currentOffsetRead = 1; // to activate offset for current
voltageOffsetRead = 1; // to activate offset for voltage
powerOffsetRead = 1; // to activate offset for power
LCD.setCursor(0,0); /* set display words starting at upper left corner*/
LCD.print ("INITIALIZING..... ");
LCD.setCursor(0,1); /* set display words starting at lower left corner*/
LCD.print ("WAIT 5 SEC ..... ");
}
}code]
(#) Skori válasza asch hozzászólására (») Jan 24, 2023 / 2
 
Pontosan így van. Annak idején a pl. Total commanderhez írtam kísérletképpen egy tcstarter.exe programot. Ez annyit csinál, hogy elindítja a Tc-t. A Tc megjelenít egy ablakot, amin van három nyomógomb, és egy szöveg, pl. hogy nyomd meg az 1-es gombot, (minden indításnál véletlenszerűen dönti el, hogy melyiket: 1,2 vagy 3). Ha nem jó gombot nyomsz meg, akkor a Tc kilép. A starter megvárja az ablak megjelenését, megnézi a kiírt szöveget, majd megnyomja a kívánt gombot (küld egy gombnyomás üzenetet az ablaknak), ezután kilép, a Tc pedig fut tovább (a kis programom meg megspórolt nekem pár másodpercet ).
(#) Kovács Tibor válasza Panhard hozzászólására (») Jan 24, 2023 /
 
Szia!
Ma volt időm foglalkozni vele, de nem működik. Az óra és perc értékét hogy kell lekérni mert így nem megy ahogy írtad...próbáltam a get.Hour és get.Minute parancsokkal de nem jó...
(#) Panhard válasza Kovács Tibor hozzászólására (») Jan 24, 2023 /
 
Nyilván a kisujjamból nem tudom kitalálni, hogy neked milyen nevű változóban van tárolva az idő. Gondoltam azt be tudod helyettesíteni. Meg ha már RTC-t használsz, feltételeztem, hogy tudod is olvasni belőle az adatokat. A példám csak egy egyszerű megoldást mutat arra, hogyan lehet időzíteni, vagy időhöz kötni egy függvény meghívását a delay() nélkül.
Az RTC-hez használt library-ben vannak példa programok, ott meg tudod nézni hogyan kell használni.
A hozzászólás módosítva: Jan 24, 2023
(#) Kovács Tibor válasza Panhard hozzászólására (») Jan 24, 2023 /
 
Jól van bocsánat, 0.1 szinten tartok, próbálom összeszedni az infot de nem mindig sikerül.
Utána nézek...
(#) Panhard válasza Kovács Tibor hozzászólására (») Jan 24, 2023 /
 
Semmi baj, nem kell bocsánatot kérned. Csak nem tudtam, hogy neked egy működő kész program kellene egyből. Ezek nem olyan bonyolult dolgok még az elején. Kicsit nézz utána mindennek, nézegesd a példa programokat.
Akkor jelenleg ott tartasz, hogy nem megy a kiolvasás sem az RTC-ből? Milyen RTC-t használsz?
(#) Kovács Tibor válasza Panhard hozzászólására (») Jan 24, 2023 /
 
Nem feltétlen kell egy működő kész program, ha segítséggel magam hozom össze különböző példákból azzal tanulom a legtöbbet.
Az RTC: DS3231.
Most ott tartok hogy be van állítva a pontos idő, két közmű mérő impulzusait "lemásolja" és együtt számol annak órájával. Ezen óraállásokat írom SD-re. csak egyenlőre (millis) időalapon és nem a valós időhöz kötve.
(#) Josi777 válasza Kovács Tibor hozzászólására (») Jan 24, 2023 / 1
 
Még csak harmadszor írom, hogy nem mindegy, hogy melyik RTC könyvtárat használod. Az innen-onnan összeollózott példák más könyvtárak alatt nem mindig működnek, ezért lenne fontos, hogy ha már a működését nem akarod megérteni, akkor legalább a másolás sikerüljön. Legalább 3 féle könyvtár van hozzá, a rinky, a rodan és az Adafruit (és lehet még amit nem ismerek).
(#) Jonni válasza Kovács Tibor hozzászólására (») Jan 24, 2023 /
 
Ha feltöltöd a teljes kódot jobban tudnak segiteni a mesterek
(#) Panhard válasza Kovács Tibor hozzászólására (») Jan 24, 2023 /
 
Ezt próbáltad: https://github.com/NorthernWidget/DS3231
Ott az examples mappában nézd meg hogyan kell használni. Másold át a programodba amit kell a now.ino fájlból. Milyen kontrollerrel használod? I2C kommunikáció jól van felépítve?
(#) asch válasza GPeti1977 hozzászólására (») Jan 24, 2023 /
 
Igazad van, tényleg meg lehet csinálni. Sima egér inputra gondoltam, ami ugye differenciális, de még ott is meg lehet csinálni, ha felküldjük a bal felső sarokba és onnan mozgatjuk a helyére.
(#) Kovács Tibor válasza Josi777 hozzászólására (») Jan 25, 2023 /
 
"ha már a működését nem akarod megérteni"
Meg akarom érteni, nem mondtam hogy nem, de kell hogy működjön és akkor bizonyos értékek, elnevezések vagy változók módosításával látom a hogy minek mi a hatása...
(#) Kovács Tibor válasza Panhard hozzászólására (») Jan 25, 2023 /
 
Este tudom folytatni, kösz.
Arduino UNO
Az I2C...azt nem is értem hogy mit kérdezel. Csak annyi van meg hogy pl. LCD esetében nem kell annyi vezetéket bekötni mert ezzel csatolva egyszerűbb a működtetése de hogy a háttérben mi zajlik az homály.
(#) GPeti1977 válasza GPeti1977 hozzászólására (») Jan 25, 2023 /
 
Itt vannak a driverek:
Bővebben: Joystick

Joystick.h fájlba még egy sort kell, beírni:
#define JOYSTICK_TYPE_MOUSEJOY 0x01
(#) SVFeri hozzászólása Jan 28, 2023 /
 
Sziasztok!
Építettem egy egyszerű súlymérő egységet mérőcellával és működik is. Az a problémám, hogy nagyon lassú. Megterhelem felmegy 100 grammra, majd leveszem a terhet. 2-3 mp kell, hogy nullára álljon. Lassú. Gyors mérést szeretnék végezni vele.
Van erre megoldás?
(#) SVFeri hozzászólása Jan 28, 2023 /
 
És az Arduinón ez a prg fut.
(#) Bakman válasza SVFeri hozzászólására (») Jan 28, 2023 /
 
Anélkül, hogy belenéznék a programba: ha felfelé gyorsan megy de lefelé nem, akkor a konkrét mérlegcella ilyen lassú.
(#) SVFeri válasza Bakman hozzászólására (») Jan 28, 2023 /
 
Folfele is lassu. Elotte egy PLC-n volt a cella, ott nagyon gyors volt. Nem a cella a lassu, hanem az elektronika.
(#) Jonni válasza SVFeri hozzászólására (») Jan 28, 2023 /
 
Ha kódot osztassz meg inkább használd a kód gondot ahogy ITT ismerteti mnyugger.
(#) Jonni válasza SVFeri hozzászólására (») Jan 28, 2023 /
 
A 64.ik sorba van egy ilyen

  1. unsigned long stabilizingtime = 2000; // preciscion right after power-up can be improved by adding a few seconds of stabilizing time

Ez 2 másodpercig időzit. Esetleg kisebb számmal kell megpróbálni hátha gyorsabb lessz
(#) SVFeri válasza Jonni hozzászólására (») Jan 28, 2023 /
 
Ez indulaskor idozit, ameddig nullazza a rendszert. Nincs benne a "loop"-ban. A prg futasat nem befolyasolja.
(#) silencezozo hozzászólása Feb 3, 2023 /
 
Sziasztok!

Szeretnék segítséget kérni egy feladathoz.
Digitális bemenetekről szeretnék beolvasni 'high" szintet, és ezeknek a szinteknek különböző értéket adni. Majd ezeket az értékeket szeretném összadni. Ezt hogyan kezdjem el?
Valamint azt szeretném még megkérdezni, hogy olvastam, hogy az OLED kijelzők hajlamosak a beégésre. Hogyan lehet kijelzőn állandóan kiírt szöveget mozgatni? Mint régen a képernyővedőnél volt?
Köszönöm előre is.
(#) Kera_Will válasza silencezozo hozzászólására (») Feb 3, 2023 /
 
Mozgatni ... mindig mas poziciot x y koordinatat adsz meg neki amikor a kimelo uzemmodba kerul a rendszer.
Kepernyo torles , majd random x y poziciok utana oda random karaktert/pixelt irsz ki , majd torles vagy pixelt kapcsolsz ki .
X Y vagy sor/oszlop parameterek a kijelzo pozicionalo fuggvenyekben amit a kijelzohoz irtak.
A hozzászólás módosítva: Feb 3, 2023
(#) proli007 válasza silencezozo hozzászólására (») Feb 3, 2023 /
 
Hello!
Az "if" függvénnyel kiértékelhetsz egy logikai relációt, ami lehet a digitális bemenet "h" szintje is. Aztán a végrehajtási résznél pld. egy konstans értékét átmásolod (vagy hozzáadod) egy változó értékéhez.
(#) Josi777 válasza silencezozo hozzászólására (») Feb 3, 2023 /
 
Egy példa a feladat megoldására:
  1. #define bemenet1 2
  2. #define bemenet2 3
  3. #define bemenet3 4
  4. #define bemenet4 5
  5.  
  6. uint8_t ertek1=10;
  7. uint8_t ertek2=65;
  8. uint8_t ertek3=2;
  9. uint8_t ertek4=29;
  10. uint16_t szumma;
  11.  
  12. void setup() {
  13.   pinMode(bemenet1, INPUT);
  14.   pinMode(bemenet2, INPUT);
  15.   pinMode(bemenet3, INPUT);
  16.   pinMode(bemenet4, INPUT);
  17.   Serial.begin(115200);
  18. }
  19.  
  20. void loop() {
  21.   szamol();
  22.   Serial.println(szumma);
  23.   delay(5000);
  24. }
  25.  
  26. void szamol(){
  27.   szumma=digitalRead(bemenet1)*ertek1+digitalRead(bemenet2)*ertek2+digitalRead(bemenet3)*ertek3+digitalRead(bemenet4)*ertek4;
  28. }
(#) Kovács Tibor hozzászólása Feb 3, 2023 /
 
Sziasztok!
UNO board-nál a 14 Digit bemenet esetében ha soros kommunikáció van akkor nem használható a 0. és 1. PIN
(#) Josi777 válasza Kovács Tibor hozzászólására (») Feb 3, 2023 /
 
Ha a 0.-tól 13.-ig számozott pinekre gondolsz, akkor nem. De ha 14 digitális bemenetre van szükség, akkor az A0-tól A5-ig is használható digitális bemenetként, így a 0. és 1. PIN szabadon maradhat. Amúgy mi a kérdés?
Következő: »»   765 / 850
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