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   349 / 852
(#) Kovidivi válasza k3gy3tl3n hozzászólására (») Máj 25, 2017 /
 
Ha bemenetnek állítasz egy lábat, akkor az magas impedanciás lesz, lebeg. Relé ide túlzás. Az Arduino lábai is félvezetőket tartalmaznak, ezért ha utána raksz még egy félvezetőt, csak megdupláztad őket, nem változott semmi. Arra ügyelj, hogy a felhúzó ellenállás ne legyen bekapcsolva, mikor bemenetnek állítod a lábat.
(#) KoblogPerGyok válasza Kovidivi hozzászólására (») Máj 25, 2017 /
 
Nem értek az elektronikához, de az jutott eszembe, hogy a kérdező kapcsolója egy szimpla cucc, gondolom rá lehet kötni az arduino 5V-ot, és a további két kivezetésen pedig figyelni az arduino-n, hogy van-e jel, vagy sincs. Szerintem még interrupt sem kell hozzá, azonban a prell-re figyelni kell ilyenkor. Nem értem pontosan, mert nem írta, hogy a fényképezőgépet akarja működtetni, hanem modellezni arduino-val.

Innentől pedig szimpla programozás, hogy egyiken van jel, másikon is van jel, vagy egyiken sem.

Nagyon rossz ötlet?
(#) proba válasza k3gy3tl3n hozzászólására (») Máj 25, 2017 /
 
Használd az input lábait outputként, felhúzó ellenállás nélkül. Szerintem minden problémát megold. Még irányt sem kell forgatnod.
A hozzászólás módosítva: Máj 25, 2017
(#) orifab válasza KoblogPerGyok hozzászólására (») Máj 25, 2017 /
 
Helló!

Csak a sima programot telepítettem (arduino-1.8.2-windows.exe) aztán tanulásként a Jedles videóban látottakat gondoltam megcsinálom. Aztán kicsit kibővítve szórakoztunk a gyerekkel kicsit...

És jött az IR próbálkozás, de kiírta a hibaüzenetet. (viszont ha fixre beírom a 12-t akkor jó).

Persze az lenne a legjobb, ha vissza tudnám állítani, mert a jövőben ha hozzá nyúlok nehogy galiba legyen..
(#) KoblogPerGyok válasza orifab hozzászólására (») Máj 25, 2017 /
 
Szerintem nem rossz ez, csak másképp kell használni.

Próbáld ki, hogy a saját kódodba a define-al:

#define TKD2 12

!!Nézz utána a define-nak, mert én rögtön rosszat írtam! Nem kell ; a végére és nem kell egyenlőség jel sem!

Szerintem így is el kell indulnia, és ekkor simán variálhatod. Természetesen akkor a 'IRremoteTools.cpp'-ben vissza kell állítanod az eredeti állást!

  1. int RECV_PIN = TKD2; // the pin the IR receiver is connected to
  2. IRrecv irrecv(RECV_PIN); // an instance of the IR receiver object
  3. decode_results results; // container for received IR codes
A hozzászólás módosítva: Máj 25, 2017
(#) atus1981 válasza nzozz hozzászólására (») Máj 25, 2017 /
 
Én egy 97-es A4-re csináltam meg és biztos vagyok benne, hogy a modernebb autók még több dolgot tudnak és kell mérniük. Szóval ott van minden az autódban, csak tudni kellene, hogy milyen protokollon lehet szóra bírni. Ennek neked kell utánanézni.
(#) orifab válasza KoblogPerGyok hozzászólására (») Máj 25, 2017 /
 
Helló!

11111111111111111111111)


Átírtam a fájlt is, és a programban:

#include<IRremote.h>
#define TKD2 12
IRrecv tsop4838(12);
decode_results result;

Hiba:
C:\Program Files (x86)\Arduino\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope

int RECV_PIN = TKD2; // the pin the IR receiver is connected to

222222222222222222222)

Viszont tovább léptem, és problémám még mindig akad:
(A progi röviden: Távirányítóról várok adatot, és tárolom. ha többet kapok, tovább léptetem)
A program eleje:

#include<IRremote.h>

IRrecv tsop4838(12);
decode_results result;
long egyes = 0;
long tizes = 0;
long szazas = 0;
byte kiirva1 = LOW;
byte kiirva2 = LOW;
byte kiirva3 = LOW;

void setup() {
// put your setup code here, to run once:
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(11,OUTPUT);//Harmasnal mindenhol 11
tsop4838.enableIRIn();
Serial.begin(9600);
Serial.println("betolte kesz");

}

void loop() {
// put your main code here, to run repeatedly:

if(tsop4838.decode(&result))
{
Serial.println(result.value);
tsop4838.resume();
}
if (result.value == 4129172055)//Ha kikapcs
{
egyes = 0;
tizes = 0;
szazas = 0;
kiirva1 = LOW;
kiirva2 = LOW;
kiirva3 = LOW;
result.value = 0;
Serial.println("Belepett torlesbe");
Serial.println(result.value);
}
else
{

if (result.value > 0 && result.value != 4129172055)//Ha új érték van beolvasva
{
szazas = tizes;
tizes = egyes;
egyes = result.value;
result.value = 0;
kiirva1 = LOW;
kiirva2 = LOW;
kiirva3 = LOW;
Serial.println(result.value);
Serial.println("Belepett leptetesbe (egyes/tizes/szazas)");
Serial.println(egyes);
Serial.println(tizes);
Serial.println(szazas);

És mait monitorozok:

betolte kesz
4146609271
0
Belepett leptetesbe (egyes/tizes/szazas)
-148358025
0
0



Valamiért az az érzésem, hogy nem jó formátumokat használok. Próbáltam már mindenfélét, de sosem egyezik meg a két adat... Vajon miért nem?

Viszont jó leírást sem találtam, ahol kellő részletességgel kapok választ, hogy például van-e még másik változó, vagy ki lehet-e íratni a result formátumát.

A fentiek tanácsán kívül még jó leírást, és ebben segítséget kérhetek?

Köszönöm.
A hozzászólás módosítva: Máj 25, 2017
(#) orifab válasza orifab hozzászólására (») Máj 25, 2017 /
 
UNSIGNED LONG ... De jó lenne nem próbálgatni...
(#) KoblogPerGyok válasza orifab hozzászólására (») Máj 26, 2017 /
 
Sajnos nem látom, hogy nálad miként/mik vannak telepítve, de itt azt írják, hogy egyszerűen törölni kell az RobotIRremote könyvtárat, mert az Arduino IDE-ben már valahol telepítve van az IR, és összeakadnak. Vagy máshonnan is le lett töltve nem tudom. Sajnálom, hogy nem ment a define.



Bővebben: Link
(#) Norbi_69 hozzászólása Máj 27, 2017 /
 
Sziasztok,
Szeretnék segítséget kérni!
Van egy 1284p Arduiono kompatibilis lapom amit össze szeretnék hozni egy 2.8 Mcufriend TFT LCD-vel.
UTFT könyvtárakkal próbálkozom, az Arduino komunikál a lappal de csak fehér kijelzőm van. Tud valaki lábkiosztást vagy bármi használható infót?

A lapom:
1284p

Köszi.
(#) vargham válasza Norbi_69 hozzászólására (») Máj 27, 2017 /
 
Az 1284 NEM Arduino kompatibilis. Az 1280 és a 2560 az. Létezik hozzá nem hivatalos támogatás. Az említett hibajelenség oka akár ez is lehet.
(#) roland9 hozzászólása Máj 28, 2017 /
 
Sziasztok!

Elkezdtem egy akvárium vezérlőt, de sajnos elakadtam ott, hogy ha a "hofok" BE értékét beállítom akkor a KI érték is ugyan annyi lesz. Tudnátok segíteni, hogy mit rontottam el?
  1. #include <Adafruit_GFX.h>
  2. #include <Adafruit_PCD8544.h>
  3. #include <RTClib.h>
  4. #include <Wire.h>
  5. #include <EEPROM.h>
  6.  
  7. RTC_DS1307 RTC;                     //Real Time Clock
  8.                                     //RTC 1307
  9.                                     //SDA to analog 4,  SCL to analog 5
  10. #define DHT_PIN A6                  // sensor pin
  11. #define SECS_PER_MIN  (60UL)
  12. #define SECS_PER_HOUR (3600UL)
  13. #define SECS_PER_DAY  (SECS_PER_HOUR * 24L)
  14. #define numberOfSeconds(_time_) (_time_ % SECS_PER_MIN)  
  15. #define numberOfMinutes(_time_) ((_time_ / SECS_PER_MIN) % SECS_PER_MIN)
  16. #define numberOfHours(_time_) (( _time_% SECS_PER_DAY) / SECS_PER_HOUR)
  17. #define elapsedDays(_time_) ( _time_ / SECS_PER_DAY)  
  18. #define maxItemSize 10
  19.  
  20. const int itemsPerScreen = 7;
  21. const int fontSize = 8;
  22. const int sensorPin = A6;
  23.  
  24. static int pinA = 2;
  25. static int pinB = 3;
  26. static int enSW = 9;
  27.  
  28. volatile byte aFlag = 0; // let's us know when we're expecting a rising edge on pinA to signal that the encoder has arrived at a detent
  29. volatile byte bFlag = 0; // let's us know when we're expecting a rising edge on pinB to signal that the encoder has arrived at a detent (opposite direction to when aFlag is set)
  30. volatile uint16_t encoderPos = 0; //this variable stores our current value of encoder position. Change to int or uin16_t instead of byte if you want to record a larger range than 0-255
  31. volatile uint16_t
  32. oldEncPos = 0; //stores the last encoder position value so we can compare to the current reading and see if it has changed (so we know when to print to the serial monitor)
  33. volatile byte reading = 0; //somewhere to store the direct values we read  our interrupt pins before checking to see if we have moved a whole detent
  34.  
  35. Adafruit_PCD8544 display = Adafruit_PCD8544(5, 4, 0);
  36.  
  37. //Declare the Menus you need.
  38. char menu[][maxItemSize] ={"Vilagitas","Hofok","Szuro","Etetes","UV","BACK"};
  39. // Only 2 sub-menus are shown. You can add as many as you wish.
  40. char subMenu0[][maxItemSize] = {"1", "2", "3", "4", "5"};
  41. char subMenu1[][maxItemSize] = {"Be", "Ki"};
  42. char subMenu2[][maxItemSize] = {"1", "2", "3", "4", "5"};
  43. char subMenu3[][maxItemSize] = {"1", "2", "3", "4", "5"};
  44. char subMenu4[][maxItemSize] = {"1", "2", "3", "4", "5"};
  45.  
  46. int addr0 = 0;
  47. int addr1 = 0;
  48. int bekapcs_val = 0;
  49. int kikapcs_val = 0;
  50. int RawValue = 0;
  51. int cnt = 0;
  52. int itemSelected, subMenuSelected;
  53. int itemsToDisplay = 0;
  54. int value;
  55. int aState;
  56. int aLastState;
  57.  
  58. unsigned long startmillis, milliSecs,mins,secs,hour;
  59.  
  60. double Voltage = 0;
  61. int tempC = 0;
  62.  
  63. void setup() {
  64.   pinMode(7, OUTPUT);
  65.  
  66.   aLastState = digitalRead(pinB);
  67.  
  68.   Wire.begin();
  69.   RTC.begin();
  70.  
  71.   display.begin();
  72.   pinMode(enSW, INPUT_PULLUP);
  73.   pinMode(pinA, INPUT_PULLUP);
  74.   pinMode(pinB, INPUT_PULLUP);
  75.   attachInterrupt(0,PinA,RISING);
  76.   attachInterrupt(1,PinB,RISING);
  77.   display.setContrast(100);
  78.   //display.display();
  79.   delay(2000);
  80.   display.clearDisplay();  
  81.   //display.setTextSize(fontSize/8);
  82.   display.setTextColor(BLACK);
  83.  
  84.   startmillis = millis();
  85.  
  86. }
  87.  
  88. void loop() {
  89.   digitalWrite(7, LOW);
  90.  
  91.   DateTime now = RTC.now();        // Clock call
  92.   now = RTC.now();
  93.  
  94.   //Show time on the default Screen.
  95.   display.setTextSize(2);
  96.   display.clearDisplay();
  97.   display.setCursor(20,16);
  98.   time(millis() / 1000);
  99.   display.display();
  100.   display.setTextSize(fontSize/8);
  101.  
  102.  // Enter the settings menu if  Switch is pressed
  103.  if(digitalRead(enSW)==0){
  104.     while(digitalRead(enSW)==0);//wait till switch is released.
  105.    
  106.     itemSelected = displayMenu(menu, sizeof(menu)/maxItemSize);
  107.     switch(itemSelected){
  108.        
  109.          case 0:
  110.                 subMenuSelected = displayMenu(subMenu0, sizeof(subMenu0)/maxItemSize);
  111.                 break;
  112.  
  113.          case 1:
  114.                 subMenuSelected = displayMenu(subMenu1, sizeof(subMenu1)/maxItemSize);
  115.                 break;
  116.  
  117.          case 2:
  118.                 subMenuSelected = displayMenu(subMenu2, sizeof(subMenu2)/maxItemSize);
  119.                 break;
  120.  
  121.          case 3:
  122.                 subMenuSelected = displayMenu(subMenu3, sizeof(subMenu3)/maxItemSize);
  123.                 break;
  124.  
  125.          case 4:
  126.                 subMenuSelected = displayMenu(subMenu4, sizeof(subMenu3)/maxItemSize);
  127.                 break;
  128.  
  129.          //you may include other cases as required!        
  130.  
  131.          default: break;      
  132.              
  133.      }
  134.  
  135.  
  136.    //if the ed option is BACK, we will go straight to the main menu.  
  137.    if(itemSelected == 0){
  138.      switch(subMenuSelected){
  139.           case 0:
  140.           while(digitalRead(enSW)){
  141.             display.setCursor(0,0);
  142.             display.clearDisplay();
  143.             display.println("01");
  144.             display.setCursor(16,16);
  145.             display.println(encoderPos);
  146.             display.display();
  147.             }
  148.             while(digitalRead(enSW)==0);
  149.             break;
  150.            
  151.           case 1:
  152.           while(digitalRead(enSW)){
  153.             display.setCursor(0,0);
  154.             display.clearDisplay();
  155.             display.println("12");
  156.             display.setCursor(16,16);
  157.             display.println(encoderPos);
  158.             display.display();
  159.             }
  160.             while(digitalRead(enSW)==0);
  161.             break;
  162.  
  163.           case 2:
  164.           while(digitalRead(enSW)){
  165.             display.setCursor(0,0);
  166.             display.clearDisplay();
  167.             display.println("23");
  168.             display.setCursor(16,16);
  169.             display.println(encoderPos);
  170.             display.display();
  171.             }
  172.             while(digitalRead(enSW)==0);
  173.             break;
  174.  
  175.           case 3:
  176.           while(digitalRead(enSW)){
  177.             display.setCursor(0,0);
  178.             display.clearDisplay();
  179.             display.println("34");
  180.             display.setCursor(16,16);
  181.             display.println(encoderPos);
  182.             display.display();
  183.             }
  184.             while(digitalRead(enSW)==0);
  185.             break;
  186.  
  187.           case 4:
  188.           while(digitalRead(enSW)){
  189.             display.setCursor(0,0);
  190.             display.clearDisplay();
  191.             display.println("45");
  192.             display.setCursor(16,16);
  193.             display.println(encoderPos);
  194.             display.display();
  195.             }
  196.             while(digitalRead(enSW)==0);
  197.             break;
  198.             default:break;
  199.             }
  200.             }
  201.    if(itemSelected == 1){
  202.     switch(subMenuSelected){
  203.           case 0:
  204.           while(digitalRead(enSW)){
  205.             bekapcsolasi_homerseklet();
  206.             }
  207.             while(digitalRead(enSW)==0);
  208.             break;
  209.            
  210.           case 1:
  211.           while(digitalRead(enSW)){
  212.             kikapcsolasi_homerseklet();
  213.             }
  214.             while(digitalRead(enSW)==0);
  215.             break;
  216.             default:break;
  217.             }
  218.             }
  219.  
  220.    if(itemSelected == 2){
  221.      switch(subMenuSelected){
  222.           case 0:
  223.           while(digitalRead(enSW)){
  224.             display.setCursor(0,0);
  225.             display.clearDisplay();
  226.             display.println("01");
  227.             display.setCursor(16,16);
  228.             display.println(encoderPos);
  229.             display.display();
  230.             }
  231.             while(digitalRead(enSW)==0);
  232.             break;
  233.            
  234.           case 1:
  235.           while(digitalRead(enSW)){
  236.             display.setCursor(0,0);
  237.             display.clearDisplay();
  238.             display.println("12");
  239.             display.setCursor(16,16);
  240.             display.println(encoderPos);
  241.             display.display();
  242.             }
  243.             while(digitalRead(enSW)==0);
  244.             break;
  245.  
  246.           case 2:
  247.           while(digitalRead(enSW)){
  248.             display.setCursor(0,0);
  249.             display.clearDisplay();
  250.             display.println("23");
  251.             display.setCursor(16,16);
  252.             display.println(encoderPos);
  253.             display.display();
  254.             }
  255.             while(digitalRead(enSW)==0);
  256.             break;
  257.  
  258.           case 3:
  259.           while(digitalRead(enSW)){
  260.             display.setCursor(0,0);
  261.             display.clearDisplay();
  262.             display.println("34");
  263.             display.setCursor(16,16);
  264.             display.println(encoderPos);
  265.             display.display();
  266.             }
  267.             while(digitalRead(enSW)==0);
  268.             break;
  269.  
  270.           case 4:
  271.           while(digitalRead(enSW)){
  272.             display.setCursor(0,0);
  273.             display.clearDisplay();
  274.             display.println("45");
  275.             display.setCursor(16,16);
  276.             display.println(encoderPos);
  277.             display.display();
  278.             }
  279.             while(digitalRead(enSW)==0);
  280.             break;
  281.             default:break;
  282.             }
  283.             }
  284.  
  285.    if(itemSelected == 3){
  286.      switch(subMenuSelected){
  287.           case 0:
  288.           while(digitalRead(enSW)){
  289.             display.setCursor(0,0);
  290.             display.clearDisplay();
  291.             display.println("01");
  292.             display.setCursor(16,16);
  293.             display.println(encoderPos);
  294.             display.display();
  295.             }
  296.             while(digitalRead(enSW)==0);
  297.             break;
  298.            
  299.           case 1:
  300.           while(digitalRead(enSW)){
  301.             display.setCursor(0,0);
  302.             display.clearDisplay();
  303.             display.println("12");
  304.             display.setCursor(16,16);
  305.             display.println(encoderPos);
  306.             display.display();
  307.             }
  308.             while(digitalRead(enSW)==0);
  309.             break;
  310.  
  311.           case 2:
  312.           while(digitalRead(enSW)){
  313.             display.setCursor(0,0);
  314.             display.clearDisplay();
  315.             display.println("23");
  316.             display.setCursor(16,16);
  317.             display.println(encoderPos);
  318.             display.display();
  319.             }
  320.             while(digitalRead(enSW)==0);
  321.             break;
  322.  
  323.           case 3:
  324.           while(digitalRead(enSW)){
  325.             display.setCursor(0,0);
  326.             display.clearDisplay();
  327.             display.println("34");
  328.             display.setCursor(16,16);
  329.             display.println(encoderPos);
  330.             display.display();
  331.             }
  332.             while(digitalRead(enSW)==0);
  333.             break;
  334.  
  335.           case 4:
  336.           while(digitalRead(enSW)){
  337.             display.setCursor(0,0);
  338.             display.clearDisplay();
  339.             display.println("45");
  340.             display.setCursor(16,16);
  341.             display.println(encoderPos);
  342.             display.display();
  343.             }
  344.             while(digitalRead(enSW)==0);
  345.             break;
  346.             default:break;
  347.             }
  348.             }
  349.  }
  350.  
  351.  
  352. }
  353.    
  354.  
  355.  
  356.  
  357.  
  358. // This function accepts the a 2D character array and its length and display it on the screen.
  359. // The function montiers the encoder position and moves the menu up and down.
  360. // It returns the ed menu option to the calling functions
  361.      
  362. int displayMenu(char menuInput[][maxItemSize], int menuLength){
  363.     int curPos,startPos, endPos;
  364.  do{
  365.      
  366.             startPos = encoderPos%menuLength;    
  367.             display.clearDisplay();
  368.      
  369.             endPos = itemsPerScreen;
  370.            
  371.             if(menuLength < itemsPerScreen)
  372.             {
  373.                  endPos = menuLength -startPos;  
  374.             }
  375.      
  376.             if((menuLength-startPos)<itemsPerScreen)
  377.             {
  378.                 endPos = menuLength -startPos;
  379.             }
  380.  
  381.             for(cnt = 0; cnt<=(endPos-1); cnt++){
  382.                 if(cnt == 0)
  383.                 {
  384.                   display.setCursor(0,0);
  385.                   display.print("->");
  386.                 }
  387.                
  388.                 display.setCursor(16, cnt*fontSize);
  389.                 display.println(menuInput[cnt+startPos]);
  390.             }
  391.            
  392.             display.display();
  393.             cnt = 0;
  394.  
  395.           if(oldEncPos != encoderPos) {
  396.             oldEncPos = encoderPos;  
  397.           }  
  398.  }while(digitalRead(enSW));
  399.  while(digitalRead(enSW)==0); //wait till switch is reseleased
  400.  return startPos;
  401. }
  402.  
  403.  
  404. void bekapcsolasi_homerseklet(){
  405.   display.setCursor(0,0);
  406.   display.clearDisplay();
  407.   display.setTextSize(1);
  408.   display.println("Bekapcsolasi Homerseklet");
  409.   display.setTextSize(2);
  410.   display.setCursor(20,25);
  411.   bekapcs_val = EEPROM.read(addr0);
  412.   aState = digitalRead(pinA);
  413.   if (aState != aLastState){
  414.     if(digitalRead(pinB) !=aState){
  415.     bekapcs_val++;
  416.   }
  417.   else{
  418.     bekapcs_val--;
  419.   }
  420.   aLastState = aState;
  421.   EEPROM.write(addr0, bekapcs_val);
  422.   }
  423.  
  424.   display.print(bekapcs_val);
  425.   display.print("^C");
  426.   display.display();
  427.   }
  428.  
  429. void kikapcsolasi_homerseklet(){
  430.   display.setCursor(0,0);
  431.   display.clearDisplay();
  432.   display.setTextSize(1);
  433.   display.println("Kikapcsolasi Homerseklet");
  434.   display.setTextSize(2);
  435.   display.setCursor(20,25);
  436.   kikapcs_val = EEPROM.read(addr1);
  437.   aState = digitalRead(pinA);
  438.   if (aState != aLastState){
  439.     if(digitalRead(pinB) !=aState){
  440.     kikapcs_val++;
  441.   }
  442.   else{
  443.     kikapcs_val--;
  444.   }
  445.   aLastState = aState;
  446.   EEPROM.write(addr1, kikapcs_val);
  447.   }
  448.  
  449.   display.print(kikapcs_val);
  450.   display.print("^C");
  451.   display.display();
  452.   }
  453.  
  454. void time(long val){
  455.   DateTime now = RTC.now();        // Clock call
  456.   now = RTC.now();  
  457. int days = elapsedDays(val);
  458. int hours = numberOfHours(val);
  459. int minutes = numberOfMinutes(val);
  460. int seconds = numberOfSeconds(val);
  461. display.setCursor(18,5);
  462. display.setTextSize(1);
  463. if(now.hour() < 10){
  464.     display.print("0");
  465.     }
  466.     display.print(now.hour(), DEC); //Print hour
  467.     display.print(':');
  468.     if(now.minute() < 10){
  469.       display.print("0");
  470.       }
  471.       display.print(now.minute(), DEC); //Print min
  472.       display.print(':');
  473.       if(now.second() < 10){
  474.         display.print("0");
  475.         }
  476.         display.print(now.second(), DEC); //Print sec
  477.  
  478.   RawValue = analogRead(sensorPin);
  479.   Voltage = (RawValue / 1023.0) * 5000;
  480.   tempC = ((Voltage-500) * 0.1)-5;
  481.   display.setCursor(20,20);
  482.   display.setTextSize(2);
  483.   display.print(tempC);
  484.   display.print("^");
  485.   display.print("C");
  486.  
  487. display.setCursor(15,40);
  488. display.setTextSize(1);
  489. display.print("0");
  490.  
  491. display.setCursor(30,40);
  492. display.setTextSize(1);
  493. display.print("0");
  494.  
  495. display.setCursor(45,40);
  496. display.setTextSize(1);
  497. display.print("0");
  498.  
  499. display.setCursor(60,40);
  500. display.setTextSize(1);
  501. display.print("0");
  502. }
  503.  
  504. void printDigits(byte digits){
  505.  // utility function for digital clock display: prints colon and leading 0
  506.  display.print(":");
  507.  if(digits < 10)
  508.    display.print('0');
  509.  display.print(digits,DEC);  
  510. }
  511.  
  512. void PinA(){
  513.   cli(); //stop interrupts happening before we read pin values
  514.   reading = PIND & 0xC; // read all eight pin values then strip away all but pinA and pinB's values
  515.   if(reading == B00001100 && aFlag) { //check that we have both pins at detent (HIGH) and that we are expecting detent on this pin's rising edge
  516.     encoderPos --; //decrement the encoder's position count
  517.     bFlag = 0; //reset flags for the next turn
  518.     aFlag = 0; //reset flags for the next turn
  519.   }
  520.   else if (reading == B00000100) bFlag = 1; //signal that we're expecting pinB to signal the transition to detent  free rotation
  521.   sei(); //restart interrupts
  522. }
  523.  
  524.  
  525. void PinB(){
  526.   cli(); //stop interrupts happening before we read pin values
  527.   reading = PIND & 0xC; //read all eight pin values then strip away all but pinA and pinB's values
  528.   if (reading == B00001100 && bFlag) { //check that we have both pins at detent (HIGH) and that we are expecting detent on this pin's rising edge
  529.     encoderPos ++; //increment the encoder's position count
  530.     bFlag = 0; //reset flags for the next turn
  531.     aFlag = 0; //reset flags for the next turn
  532.   }
  533.   else if (reading == B00001000) aFlag = 1; //signal that we're expecting pinA to signal the transition to detent  free rotation
  534.   sei(); //restart interrupts
  535. }

menü.png
    
(#) KoblogPerGyok válasza roland9 hozzászólására (») Máj 28, 2017 / 1
 
Szia!

Reggel van nekem még nagyon, de itt a gond szerintem:

EEPROM.write(addr1, kikapcs_val);

Az addr1, és addr0 minden esetben 0. Szerintem felülírod a ki-val a be-t. De lehet tévedek, mert mint mondtam reggel van, illetve a programod sem kicsi!

Szép nagyon, gratulálok!
(#) Tasznka válasza roland9 hozzászólására (») Máj 28, 2017 / 1
 
Szia! 46-47 sornál lesz a bibi.Lekéstem
A hozzászólás módosítva: Máj 28, 2017
(#) roland9 válasza KoblogPerGyok hozzászólására (») Máj 28, 2017 /
 
Köszi a segítséget, tényleg ott volt a bibi
Igen nem kicsi a program sem, de még koránt sincs vége
(#) roland9 válasza Tasznka hozzászólására (») Máj 28, 2017 /
 
Köszi, igen ott volt a hiba
(#) zsolt58 hozzászólása Máj 28, 2017 /
 
Sziasztok.
Vásároltam egy ilyen távirányitó adó-vevö szettet.
És Arduinoval le szeretném kódolni, hogy más ne birja másik távirányitoval használni, mert ugy tudom, hogy ilyen vevö jó az összes olyan távirányitohoz.
Remélem érthetöen irtam le.
Üdv.
(#) attika válasza zsolt58 hozzászólására (») Máj 28, 2017 / 1
 
Na ez kemény dió lesz.
Szerintem ez nem megoldható sem arduinóval se mással, vagy ha meg is oldható az nem egy kezdő hobbista feladat.
Gondolom már a távirányítónak kódolva kéne küldenie a jelet amit a vevő tud értelmezni.
Mind a távba és mind a vevőbe bele kéne piszkálni ami egy arduval szerény véleményem szerint nem megoldható.
(#) Kovidivi válasza zsolt58 hozzászólására (») Máj 28, 2017 / 1
 
Adó oldalon nem csak a 4 gombot nyomod meg, hanem azok kombinációját, esetleg egymás utáni sorrendiség alapján "üzenetet" tudsz küldeni a másik oldalnak. Pl. abcdadcb egymás után jelent valamit. De úgy sejtem, hogy ha egyszerre lenyomod az a és b gombot, akkor a vevőnél is meg fog ez az információ jelenni, tehát 4bit-et át tudsz vinni. Innentől úgy kódolsz, ahogy akarsz, akár ellenőrző összeggel, vagy amivel akarsz. Egy biztos: az eredeti dobozba nem fogsz beférni, tehát építened kell egy másikat (sajátot), akkor pedig már érdemesebb egy nRf24 modula befizetni, kiforrottabb technika sokkal. Ne füstjelekkel kommunikálj, ha ott a telefon a zsebedben.
(#) zsolt58 válasza Kovidivi hozzászólására (») Máj 28, 2017 /
 
Köszönöm mind kettöttöknek.
Igazábol ez egy kapu nyitóba menne a távirányitó.
És hát nem szeretném ha mindenki nyitogatná a kapumat.
Mert csak 4 távirányitora kellene, hogy reagáljon.
(#) tbarath válasza zsolt58 hozzászólására (») Máj 28, 2017 /
 
És egy 500 Ft-os kütyüre szeretnéd bízni a kapu nyitogatását?
(#) Kera_Will válasza zsolt58 hozzászólására (») Máj 28, 2017 /
 
Tanítható ugrókódos távirányítót már közel 25 éve kitalálták, azzal talán biztosabb lenne a technika.
Írd meg mindezt ardura. Akkor lehetne hozzá bízni.
Vagy sajátos protokollal védeni a titkosított adatforgalmat a 2 uC között.
Ha mindezt enélkül teszed akkor elég 1szer lehallgatni az adat forgalmadat akkor már nyitható a kapud.
A hozzászólás módosítva: Máj 28, 2017
(#) roland9 válasza zsolt58 hozzászólására (») Máj 29, 2017 /
 
Szia!
Én is rendeltem ilyen adó-vevő szettet 2db-ot is ugyan azon személytől, de nekem nem akart az egyik adó a másik vevővel menni, illetve fordítva sem akart működni, csak a sajátjukkal.
A kapu már 2 éve teszi a dolgát eddig hibátlanul
(#) kapu48 válasza roland9 hozzászólására (») Máj 29, 2017 /
 
Akkor annyi vevőt kel beépíteni, ahányan akarjátok vezérelni?

Mondjuk 1 nagy család vannak 4-en!
A hozzászólás módosítva: Máj 29, 2017
(#) roland9 válasza kapu48 hozzászólására (») Máj 29, 2017 /
 
Én ezt úgy oldottam meg, hogy vettem Ilyen távirányítókat, ezekben van olyan funkció hogy az adott gombot az adott gombra fel tudod tanítani, ebből csinálsz 4-et és már meg is van. Nyilván ha valaki nagyon akarja akkor ezt is fel tudja törni.
Videó a táv tanításról
(#) vargaf válasza zsolt58 hozzászólására (») Máj 29, 2017 / 2
 
Ha megnézed a távirányító belsejét láthatod, hogy beállítható egy 8 bites kód az adón és a vevőn is. Ha mindkettőt beállítod azonos kódra, akkor csak a Te adód jelét veszi a vevő. Az 1-8 lábak GND-re és a pozitív tápra is köthetők, vegyesen.
A hozzászólás módosítva: Máj 29, 2017
(#) jeges válasza zsolt58 hozzászólására (») Máj 29, 2017 /
 
Biztonsági szempontbol az ask protokol nagy nulla fix kodot küdözget ez simán klonozható!
Valami bluetooth vagy wifis komunikáció előnyösebb mert az olcsobb is talán meg van titkositás is meg egy androidos telefonal lehet mind távirányitó már mindkét protokolra! A vevöt meg megoldod arduino+bluetooth vagy wifi értelmeze... hc-05 vagy esp8266
A hozzászólás módosítva: Máj 29, 2017
(#) zsolt58 válasza jeges hozzászólására (») Máj 29, 2017 /
 
Oké, de családban csak 2 okostelefon van. A szüleim akkor nem bírják majd nyitni és csukni...
(#) Bell válasza tbarath hozzászólására (») Máj 29, 2017 /
 
Gondolom a kütyük mellett ott vannak a kutyák is
(#) Kera_Will válasza zsolt58 hozzászólására (») Máj 29, 2017 /
 
Idézet:
„Oké, de családban csak 2 okostelefon van. A szüleim akkor nem bírják majd nyitni és csukni...”

Olvass vissza és kövesd le azokat az eszközöket amiket emlegetnek a hozzászólásokban, ha ezt megtetted volna akkor ilyet nem válaszolsz .
Következő: »»   349 / 852
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