Fórum témák

» Több friss téma
Fórum » Arduino
 
Témaindító: groening, idő: Szept 28, 2008
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   545 / 545
(#) Rober_4 válasza Rober_4 hozzászólására (») Pé, 15:25 /
 
Szerintetek az Arduino Due Dac-ja signed, vagy unsigned adatokat vár?
Itt azt írják, ha jól olvastam, hogy a dolog eszközspecifikus:
pcm
(#) sector99 válasza sector99 hozzászólására (») Szo, 8:05 /
 
Sziasztok !
Most lett időm foglalkozni az óraforgatóval. Első "önálló" programom, így néz ki:

  1. /*Forgató karórához Attiny85 - Digispark
  2. * 2019. július
  3. * 1 és 2 pin bemenet, 3 és 4 pin  kimenet
  4. * H híd meghajtásához
  5. */
  6.  
  7. int  switchOnePin = 1;    // digital  bemenetek 1 és 2 pin
  8. int  switchTwoPin = 2;    //
  9.  
  10. bool b1;
  11. bool b2;
  12.  
  13. int  outOnePin = 3;       // kimenet híd meghajtáshoz, 3 és 4 pin
  14. int  outTwoPin = 4;
  15. int currentstate = 0;
  16. int newState = 0;
  17. int oldState = 0;
  18.  
  19. void setup() {
  20.  
  21.   pinMode(switchOnePin, INPUT);
  22.   pinMode(switchTwoPin, INPUT);
  23.   pinMode( outOnePin, OUTPUT);
  24.   pinMode( outTwoPin, OUTPUT);
  25.   digitalWrite (outOnePin, LOW);
  26.   digitalWrite (outTwoPin, LOW)
  27.   // delay (1000);
  28.  
  29. }
  30.  
  31. void loop()
  32. {
  33.  
  34.   checkButtons();
  35.   delay(5000);
  36.  
  37.  
  38.   if (oldState != newState)
  39.   {
  40.  
  41.     if (newState == 1 )
  42.     {
  43.       jobbra();
  44.     }
  45.  
  46.     if (newState == 2 )
  47.     {
  48.       balra();
  49.     }
  50.  
  51.     if (newState == 3 )
  52.     {
  53.       valtva();
  54.     }
  55.   }
  56. }
  57.  
  58. void checkButtons()
  59. {
  60.   int b1 = digitalRead(switchOnePin);
  61.   int b2 = digitalRead(switchTwoPin);
  62.   delay(1000);
  63.  
  64.   if (b1 == LOW)
  65.   {
  66.     newState = 1;
  67.   }
  68.  
  69.   if (b2 == LOW)
  70.   {
  71.     newState = 2;
  72.   }
  73.  
  74.   if (b1 == LOW & b2 == LOW)
  75.   {
  76.     newState = 3;
  77.   }
  78.  
  79. }
  80.  
  81. void jobbra()
  82. {
  83.   digitalWrite (outTwoPin, LOW);
  84.   delay(100);
  85.   digitalWrite (outOnePin, HIGH);
  86.   oldState = newState;
  87. }
  88.  
  89. void balra()
  90. {
  91.   digitalWrite (outOnePin, LOW);
  92.   delay(100);
  93.   digitalWrite (outTwoPin, HIGH);
  94.   oldState = newState;
  95. }
  96.  
  97. void valtva()
  98. {
  99.  
  100.   digitalWrite (outOnePin, LOW);
  101.   delay(100);
  102.   digitalWrite (outTwoPin, HIGH);
  103.   delay(10000);
  104.   digitalWrite (outTwoPin, LOW);
  105.   delay(10000);
  106.   digitalWrite (outOnePin, HIGH);
  107.  
  108. }


A dobozban kapcsoló van, nem nyomógomb. 3 állás: jobbra, balra és váltva forgás a cél. Biztosan nem fogja öt percenként kapcsolgatni. Lehet, hogy van más - szebb, egyszerűbb - megoldás is, nekem elsőre ez sikerült. Kipróbálva még nem volt. És még így a folyamatos váltva forgás nincs megoldva, hogy addig csinálja, amíg a kapcsoló állása nem változik.
Várom véleményeket - biztos van benne hiba. Köszi !
Hogy kell kódot beilleszteni, hogy ne legyen ennyi üres sor benne ?
(#) kapu48 válasza sector99 hozzászólására (») Szo, 14:04 /
 
Helyesen Logical AND:
Bővebben: Link

Így b1 = LOW és b2 = LOW esetén mind a három feltétel vizsgálatod teljesül.
Jobb lenne így:
  1. //newState = 0;
  2. if (b1 == LOW && b2 == HIGH)
  3. {
  4.   newState = 1;
  5. } else if (b1 == HIGH && b2 == LOW)
  6. {
  7.    newState = 2;
  8. }else  if (b1 == LOW && b2 == LOW)
  9. {
  10.    newState = 3;
  11. } // else newState = 0; // Valahogyan ki is kellene kapcsolni?
A hozzászólás módosítva: Szo, 14:11
(#) sector99 válasza kapu48 hozzászólására (») Szo, 14:32 /
 
Köszi a módosítást ! Az igazság az, hogy így a nyugdíjazás küszöbén már nem úgy működik az agy mint 20-30 évesen...
Igen, ez csak teljesen alap program, annyit akarok még bele tenni, hogy 2-3 órányi működés után álljon le a forgatás. Ezt hogy lenne legegyszerűbb ? Számolni a loop ciklust vagy az időt mérni ?
(#) kapu48 válasza sector99 hozzászólására (») Szo, 14:51 / 1
 
hour to milliseconds: 3h = 10800000ms
Bővebben: Link

  1. unsigned long time;
  2.  
  3. setupban:
  4. time = millis() + 10800000;
  5.  
  6. loopban:
  7. if(millis() > time) newState = 0;
(#) sector99 válasza kapu48 hozzászólására (») Szo, 15:17 /
 
Köszi!
Következő: »»   545 / 545
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu