Jump to content



Ενα ταξιδι στον αγνωστο κοσμο του arduino


Recommended Posts

Το λοιπον , σημερα μου ηρθαν και τα καλωδιακια  (ειχα δοκιμασω να κανω τις ενωσεις με δικα μου αυτοσχεδια αλλα μου εσπασαν τα νευρα ) 

Σε αυτο το τοπικ απλα θα ανεβαζω την "προοδο" μου πανω στο θεμα , δεν εχω ιδεα απο προγραμματισμο εκτος απο την GLOSSA στο λυκειο η οποια ναι μεν ηταν γελοια αλλα με βοηθησε να καταλαβω την λογικη του αθληματος , λιγακι visual basic στο εργαστηριο της σχολης οπου φτιαχναμε κουμπακια και καναμε ασκησης ΛΟΤΤΟ η αριθμομηχανη καθως και καθολου απλη basic την οποια το προηγουμενο βραδυ διαβασα τις εντολες , πηγα εδωσα το μαθημα και περασα με 5αρακι . 

 

Οποτε θα βασιστω σε ετοιμο κωδικα του ιντερνετ και -μαγειρεμα- των εντολων για να φτασω στο αποτελεσμα που θελω . 

Ο τελικος μου σκοπος ειναι η οθονη να αναγραφει 8 εξοδους και εγω να επιλεγω την καθε μια με το joystick κανοντας την ON/OFF οπου με την σειρα του θα ελεγχει και ενα ρελεδακι , ΕΑΝ (που αμφιβαλλω) τα καταφερω , θα ηθελα με καποιον τροπο να φτασω στο να ανοιγω τον θερμοσιφωνα απο μακρυα   

 

Ο πρωτος κωδικας που εβαλα ειναι απλος , να ανοιγει και να κλεινει μαι εξοδο καθε δευτερολεπτο , δουλεψε . 

Δευτερος εβαλα να παρει και τα 8πιν και να τα εναλαζει , δουλεψε . 

Μετα συνδεσα το joystick  , θελω να το κανω με καθε κλικ να μεταβενει ενα output pin μπροστα .........φυσικα ΔΕΝ δουλεψε 

Ο κωδικας ειναι απλος και τον βρηκα απο το ιντερνετ φυσικα 

 

Spoiler

// this constant won't change:
const int  buttonPin = 2;    // the pin that the pushbutton is attached to
const int ledPin = 13;       // the pin that the LED is attached to

// Variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button

void setup() {
  // initialize the button pin as a input:
  pinMode(buttonPin, INPUT);
  // initialize the LED as an output:
  pinMode(ledPin, OUTPUT);
  // initialize serial communication:
  Serial.begin(9600);
}


void loop() {
  // read the pushbutton input pin:
  buttonState = digitalRead(buttonPin);

  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter);
    } else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println("off");
    }
    // Delay a little bit to avoid bouncing
    delay(50);
  }
  // save the current state as the last state,
  //for next time through the loop
  lastButtonState = buttonState;


  // turns on the LED every four button pushes by
  // checking the modulo of the button push counter.
  // the modulo function gives you the remainder of
  // the division of two numbers:
  if (buttonPushCounter % 4 == 0) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }

}

 

 

Εδω ερχεται η πρωτη μου εκλιση για βοηθεια :p 

Για καποιο λογο απλα και μονο η παρουσια του χεριου μου πυροδοτει το input pin , τι μπορει να φταιει ? 

ΕΑΝ πιασω το κουτι του υπολογιστη , τοτε η αποσταση που κανει τα "δικα του" μειωνεται .... η τροφοδοσια του ειναι απο την USB και δεν εχω την φυσα για να του δωσω με μπαταρια 

Το μονο που δοκιμασα ειναι να το βαλω σε πριζα με τον φορτηστη του κινητου αλλα και παλι μου τα κανει αυτα 

 

 

IMG_20160323_142411[1].jpg

  • Like 4
Link to comment
Share on other sites

Arigato :D

Βασικα εχω την εντυπωση οτι το προβλημα μου ειναι στην χαλια γειωση του σπιτιου 

Και σε μια κατασκευη που ειχαμε κανει σχολη με κατι διοδους , ενα 555 και buzzer ειχα παρατηρισει το ιδιο προβλημα -να κανει οτι θελει- το οποιο το φτιαξα βαζοντας μπαταρια οποτε παιζει πολυ αυτο το σεναριο .... 

 

 

Link to comment
Share on other sites

Χθες ψιλοαπογοητευτηκα με την χαζομαρα και ετσι λοιπον σημερα ειπα να κοιταξω τι γινεται με το joystick , βρηκα αυτην την σελιδα

Εχοντας καταλαβει πως δουλευει ο εντοπισμος της θεσης του συναντησα τον κωδικα του τυπου οπου δουλευει τα κουμπακια πανω στο shield του .... ναι μεν το δικο μου ειναι διαφορετικο ,διαπιστωσα το εξης 

Παράθεση

pinMode(PIN_BUTTON_SELECT, INPUT);  
  digitalWrite(PIN_BUTTON_SELECT, HIGH); 

 

Εγω εβαζα μονο pinMode για να δηλωσω αμα προκειτε για εισοδο η εξοδο αλλα αποτι φαινεται χρειαζεται να γινεται καθε φορα και μια αρχικοποιηση της καταστασης του pin  

Με λιγο πειραγμα εφτιαξα τον παρακατω 

 

Spoiler

// Store the Arduino pin associated with each input

// Select button is triggered when joystick is pressed
const byte PIN_BUTTON_SELECT = 2; 
const byte RELE = 13;
int buttonState = 0;


void setup() {
  Serial.begin(9600);


  pinMode(RELE , OUTPUT);
  pinMode(PIN_BUTTON_SELECT, INPUT);  
  digitalWrite(PIN_BUTTON_SELECT, HIGH); 
  digitalWrite(RELE , HIGH); 
  
}


void loop() {
  

 
  Serial.print("s:");
  Serial.print(digitalRead(PIN_BUTTON_SELECT));
  Serial.print(" ");
  buttonState = digitalRead(PIN_BUTTON_SELECT);
 
  Serial.println();
 if (buttonState == HIGH) {
  digitalWrite(RELE , LOW);
 }else {
  digitalWrite(RELE , HIGH);
 }
 
  
}
 

 

 

Και τανταν!!!! δουλεψε το ασφαλμενο χθεσινο προβλημα 

 

Επομενο βημα να φτιαξω counter ωστε καθε κλικ να προχοραει ενα rele μπροστα  , ισως να δοκιμασω να σεταρω και Χ-Υ axis ωστε να τα ελεγχω ολα με βαση που κοναει το joystick 

 

Για τους γνωστες τωρα ομως ..... 

Παράθεση

 if (buttonState == HIGH) {
  digitalWrite(RELE , LOW);
 }else {
  digitalWrite(RELE , HIGH);
 }

 Με την μονη συνθηκη το χω , τι γινεται ομως αμα θελω να κανω 2πλη συγκριση ? 

Δηλαδη του τυπου  

 if (xaxis == 1) AND (yaxis == -1) { 

 

 

 

 

 

Έγινε επεξεργασία από kpetros
  • Like 1
Link to comment
Share on other sites

Χθες εκανα μια σχετικη προοδο κανοντας το να δουλεψει σωστα στην περιπτωση -παταω κλικ , προχωραει ρελε - 

Για αυτην την δουλεια εβαλα το counter οπου μετραει απο το 0 εως το 7 και καθε φορα χρησημοποιω αυτην την "θεση" ωστε να ανοιξει και το σωστο ρελεδακι , αντιστοιχα για να κλεισω το προηγουμε χρησημοποιω το counter-1  . Οταν φτασει στο 8  το κανω επαναφορα στον αριθμο 0 , παρολαυτα αντιμετοπησα το εξης θεμα το οποιο απλα ΔΕΝ ΣΤΕΚΕΙ . 

 

Αφηνοντας το counter να μπει στον αριθμο 8 , στην επομενη επαναληψη ουσιαστηκα θα ανοιξει το ρελε[8] το οποιο ... ΔΕΝ ΥΠΑΡΧΕΙ και απλα θα κλεισει το ρελε[7] . ΟΜΩΣ μπαινοντας στο [8] μου ανοιγε το ρελε[3] !!!!  (πιθανον επιδη ειναι συνδεμενο στην θεση 8 του arduino .... περιεργα πραματα . Τα φτιαξα ομως βαζοντας ακομα ενα if 

 

Τελος μαλλον δεν υπαρχει διπλη συνθηκη if ....

 

Spoiler

const int Koumpi = 2;   
const int RelayCount = 8;    
int Rele[] = {
  6, 7, 8, 9, 10, 11, 12, 13
};  
int buttonState = 0;
int lastButtonState =0;
int counter = 0;


void setup() {
  
  pinMode(Koumpi, INPUT);  
  digitalWrite(Koumpi, HIGH); 
  for (int thisRelay = 0; thisRelay < RelayCount; thisRelay++) {
    pinMode(Rele[thisRelay], OUTPUT);
    digitalWrite(Rele[thisRelay] , HIGH);
  }
}

void loop() {
   buttonState = digitalRead(Koumpi);  
 if (buttonState != lastButtonState) {
  if (buttonState == LOW) {
    if (counter == 8) {
      digitalWrite(Rele[7] , HIGH);
      counter =0;
    }
  digitalWrite(Rele[counter] , LOW);
  digitalWrite(Rele[counter-1] , HIGH);
  counter++;
  delay(100);
  }
 }
lastButtonState = buttonState;
}

 

 

Spoiler

const byte PIN_ANALOG_X = 0;
const byte PIN_ANALOG_Y = 1;

const int X_THRESHOLD_LOW = 450;
const int X_THRESHOLD_HIGH = 550;    

const int Y_THRESHOLD_LOW = 450;
const int Y_THRESHOLD_HIGH = 550;    

int x_position;
int y_position;

int x_direction;
int y_direction;

const int RelayCount = 8;    
int Rele[] = {
  6, 7, 8, 9, 10, 11, 12, 13
};  

void setup() {
  for (int thisRelay = 0; thisRelay < RelayCount; thisRelay++) {
    pinMode(Rele[thisRelay], OUTPUT);
    digitalWrite(Rele[thisRelay] , HIGH);
  }
  Serial.begin(9600);
}

void loop () {
  x_direction = 0;
  y_direction = 0;
 
  x_position = analogRead(PIN_ANALOG_X);
  y_position = analogRead(PIN_ANALOG_Y);
 
 
  if (x_position > X_THRESHOLD_HIGH) {
    x_direction = 1;
  } else if (x_position < X_THRESHOLD_LOW) {
    x_direction = -1;
  }

  if (y_position > Y_THRESHOLD_HIGH) {
    y_direction = 1;
  } else if (y_position < Y_THRESHOLD_LOW) {
    y_direction = -1;
  }
   
 
  if (x_direction == -1) {
      if (y_direction == -1) {
        digitalWrite(Rele[0] , LOW);
      } else if (y_direction == 0) {
        digitalWrite(Rele[1] , LOW);
      } else {
        // y_direction == 1
        digitalWrite(Rele[2] , LOW);    
      }  
  } else if (x_direction == 0) {
      if (y_direction == -1) {
        digitalWrite(Rele[3] , LOW);
      } else if (y_direction == 0) {
        Serial.println("centered");
      } else {
        // y_direction == 1
        digitalWrite(Rele[4] , LOW);      
      }
  } else {
      // x_direction == 1
      if (y_direction == -1) {
        digitalWrite(Rele[5] , LOW);
      } else if (y_direction == 0) {
        digitalWrite(Rele[6] , LOW);
      } else {
        // y_direction == 1
        digitalWrite(Rele[7] , LOW);     
      }
  }
  delay(50);
  for (int thisRelay = 0; thisRelay < RelayCount; thisRelay++) {
    pinMode(Rele[thisRelay], OUTPUT);
    digitalWrite(Rele[thisRelay] , HIGH);
  }
}
 

 

 

 

Link to comment
Share on other sites

@unseen

 

Επειδη σε ενα προηγουμενο ποστ ειχες ανεβασει πως ειχες δουλεψει με ακριβος την ιδια οθονουλα , θα μπορουσες να με καθοδηγισεις λιγο ? 

δοκιμασα κατι libraries απο adafruit αλλα δεν μου δουλευει ....

Link to comment
Share on other sites

@unseen

 

Σωραιος αλλα μου βγαζει προβλημα 

 

Spoiler

Arduino: 1.6.7 (Windows 10), Board: "Arduino/Genuino Uno"

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino: In function 'void loop()':

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:52:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Universal TFT Lib.", CENTER, 1);

                                               ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:55:42: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("QDtech Co.LTD", LEFT, 114);

                                          ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:56:37: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("(C)2013", RIGHT, 114);

                                     ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:66:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Draw crosshairs", CENTER, 1);

                                            ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:82:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Draw sin/cos/tan.", CENTER, 1);

                                              ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:84:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Sin", 5, 15);

                            ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:91:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Cos", 5, 27);

                            ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:98:28: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Tan", 5, 39);

                            ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:118:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Draw moving sinewave", CENTER, 1);

                                                 ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:149:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Draw fill rectangles", CENTER, 1);

                                                 ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:183:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("fill round rectangle", CENTER, 1);

                                                 ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:217:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Draw fill circles", CENTER, 1);

                                              ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:251:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Draw line in pattern", CENTER, 1);

                                                 ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:283:48: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Draw random circles", CENTER, 1);

                                                ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:303:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Draw random rectangl", CENTER, 1);

                                                 ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:324:49: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Draw round rectangle", CENTER, 1);

                                                 ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:341:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Draw random Line", CENTER, 1); 

                                             ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:361:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Draw random point", CENTER, 1); 

                                              ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:379:40: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("That's it!", CENTER, 20);

                                        ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:380:45: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Restarting in a", CENTER, 45);

                                             ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:381:44: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("few seconds...", CENTER, 57);

                                            ^

C:\Users\Petros\Desktop\1.8SPI Test Code for ArduinoUNO\QDtech_Demo_160x128_Serial_S6D02A1\QDtech_Demo_160x128_Serial_S6D02A1.ino:385:47: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

   myGLCD.print("Runtime: (msecs)", CENTER, 103);

                                               ^

C:\Users\Petros\Desktop\arduino-1.6.7\libraries\UTFT\DefaultFonts.c:14:14: error: variable 'SmallFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

 fontdatatype SmallFont[1144] PROGMEM={         

              ^

C:\Users\Petros\Desktop\arduino-1.6.7\libraries\UTFT\DefaultFonts.c:118:14: error: variable 'BigFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

 fontdatatype BigFont[3044] PROGMEM={

              ^

C:\Users\Petros\Desktop\arduino-1.6.7\libraries\UTFT\DefaultFonts.c:227:14: error: variable 'SevenSegNumFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

 fontdatatype SevenSegNumFont[2004] PROGMEM={

              ^

exit status 1
Error compiling.

  This report would have more information with
  "Show verbose output during compilation"
  enabled in File > Preferences.
 

 

 

Επεισης σε κατι αλλα ετοιμα , κατα τον ελεγχο μου βγαζουν το 

'conv2d' was not declared in this scope

 

 

Απο αντιστασεις ειχα 1,2ΚΩ αλλα δεν νομιζω να κανουν και μεγαλη διαφορα

Link to comment
Share on other sites

Και μετα απο 5 ωρες , 2 match  (ευτυχος το ενα ηταν win ) και λιγη μελετη . Καταφερα να μαγειρεψω ολα τα συστατικα και να φτασω στο ΤΕΛΙΚΟ επιθυμητο αποτελεσμα 

Ειλικρινα δεν το περιμενα τοσο ευκολο  , ισως να ηταν το φιλικο περιβαλλον και ο αφθονος ετοιμος κωδικας , ισως να ηταν που στο σχολειο μου αρεσε ο προγραμματισμος και ειχα πιασει το νοημα . 

Μετα απο αυτο που σε λιγοτερο απο 1 μερα (ε ναι , καπου τοσο ασχολιθηκα συνολικα ) το ολοκληρωσα , δεν μου κανει καθολου εντυπωση που ανα καιρους βγαινουν κατι αρθρα τυπου   "12 χρονος εφτιαξε το 3ο ματι για τους τυφλους " και ο τυπος απλα εχει παρει ενα arduino με εναν αισθητιρα αποστασης και ντανταν 

 

Το προγραμμα μου λοιπον εχει την εξης λογικη 

Καταχωρω τα 8 (εμ....7 , θα εξηγησω στο τελος) ρελεδακια και τα σεταρω να ειναι HIGH για αρχη , επισης με μια επαναληψη στινω το αρχικο περιβαλλον δηλαδη να φαινονται τα διαθεσιμα ρελε καθως και ενα βελακι για την "πλοηγηση".  

Χρησημοποιω την μεταβλητη axonasX για να δω που βρισκομαι , καθε φορα που παω το joystick επανω , προσθετο +1 ενω οταν παει κατω αφαιρω -1 . Οταν φτασει στα "ορια" απλα τον επαναφερω . Με αυτον τον τροπο και μαι απλη συνθηκη κουναω το βελακι 

Παράθεση

("<==",120,(axonasX*15),2);

Το πρωτο συμβολο ειναι το βελακι , το 120 ειναι ο αριθμος πιξερ στον οριζοντιο αξονα και η πραξη διπλα ειναι στον καθετο αξονα , τελςο το 2 ειναι το μεγεθος γραμματοσειρας .

 

Εφοσον το βελακι εχει κουνηθει , στην οθονη παραμενουν και ολες οι προηγουμενες θεσεις του ...... με τον πιο απλο "εξαφανισω" την υπαρξη τους ξανατυπωνοντας το ιδιο text σε full μαυριλα 

Παράθεση

 tft.setTextColor(ST7735_BLACK, ST7735_BLACK);
     tft.drawCentreString("<==",120,((axonasX-1)*15),2);

 

Τελος αφου ξερω (το προγραμμα ξερει ) το που βρισκομαι στον axonasX , φτιαχνω ακομα μια συνθηκη οπου οταν το joystick κουνηθει αριστερα , να ανοιξει το ρελε ενω δεξια να το κλεισει  . Τοσο απλα !!!!!!!!!!!!!!!!!!!!!!!!

 

 

 

Εφαγα ολα τα pins απο το arduino ΙΣΑ ΙΣΑ , ομως για καποιο λογο το pin D12 δεν μου δινει εξοδο   (ακομα και αμα απλα του γραψω να ποσταρει LOW για να δω κινηση ) οποτε εχω 7 ενεργα ρελεδακια   :p

@unseen   Μηπως ξερεις κατι πανω σε αυτο ?

Για αρχη θα ψαξω να βρω αποστατες για να βιδωσω ολη μου την δημιουργια σε κανα ξυλο . Μετα με κοβω να παραγγελνω arduino mega και αρκετους αισθητηρες!!!!

 

 

 

 

 

Spoiler

const byte PIN_ANALOG_X = 0;
const byte PIN_ANALOG_Y = 1;
const int X_THRESHOLD_LOW = 450;
const int X_THRESHOLD_HIGH = 550;    
const int Y_THRESHOLD_LOW = 450;
const int Y_THRESHOLD_HIGH = 550;    
int x_position;
int y_position;
int x_direction;
int y_direction;
#define sclk 13  
#define mosi 11  
#define cs   9
#define dc   8
#define rst  7  
#include <Adafruit_GFX_AS.h>   
#include <Adafruit_ST7735_AS.h> 
#include <SPI.h>
Adafruit_ST7735_AS tft = Adafruit_ST7735_AS(cs, dc, rst); 
unsigned long targetTime = 0;
byte red = 31;
byte green = 0;
byte blue = 0;
byte state = 0;
unsigned int colour = red << 11;
int axonasX =0;
int axonasY =0;
const int RelayCount = 7;    
int Rele[] = {
    2, 3, 4, 5, 6, 7, 10 
};  


void setup() {
  for (int thisRelay = 0; thisRelay < RelayCount; thisRelay++) {
    pinMode(Rele[thisRelay], OUTPUT);
    digitalWrite(Rele[thisRelay] , HIGH);
  }
  tft.initR(INITR_BLACKTAB); 
  tft.setRotation(1);
     tft.fillScreen(ST7735_BLACK);
     for (int i = 0; i < 7; i++) {
         tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
     tft.drawCentreString("anoixto",30,i*15,2);
     }
     tft.setTextColor(ST7735_WHITE, ST7735_WHITE);
     tft.drawCentreString("<==",120,0,2);
tft.setTextColor(ST7735_BLUE, ST7735_BLUE);
     tft.drawCentreString("THE LAB      kpetros",60,110,2);
}


void loop() {
 
x_direction = 0;
y_direction = 0;
x_position = analogRead(PIN_ANALOG_X);
y_position = analogRead(PIN_ANALOG_Y);    
  
  if (x_position > X_THRESHOLD_HIGH) {
    axonasX++;
    if (axonasX>6) {
      axonasX =0;
        tft.setTextColor(ST7735_BLACK, ST7735_BLACK);
     tft.drawCentreString("<==",120,((6)*15),2);
    }
    tft.setTextColor(ST7735_WHITE, ST7735_WHITE);
     tft.drawCentreString("<==",120,(axonasX*15),2);
     tft.setTextColor(ST7735_BLACK, ST7735_BLACK);
     tft.drawCentreString("<==",120,((axonasX-1)*15),2);
  } 
else if (x_position < X_THRESHOLD_LOW) {
    axonasX--;
 if (axonasX<0) {
      axonasX =6;
     tft.setTextColor(ST7735_BLACK, ST7735_BLACK);
     tft.drawCentreString("<==",120,((0)*15),2);
    }
    tft.setTextColor(ST7735_WHITE, ST7735_WHITE);
     tft.drawCentreString("<==",120,(axonasX*15),2);
     tft.setTextColor(ST7735_BLACK, ST7735_BLACK);
     tft.drawCentreString("<==",120,((axonasX+1)*15),2);
}
if (y_position > Y_THRESHOLD_HIGH) {
          tft.setTextColor(ST7735_GREEN, ST7735_BLACK);
    
     tft.drawCentreString(" anoixto ",30,(axonasX*15),2);
     digitalWrite(Rele[axonasX] , HIGH);
}else if (y_position < Y_THRESHOLD_LOW) {
    tft.setTextColor(ST7735_RED, ST7735_BLACK);
          tft.drawCentreString(" kleisto ",30,(axonasX*15),2);
          digitalWrite(Rele[axonasX] , LOW);

}

   delay(200);
  }

 

 

 

 

 

Έγινε επεξεργασία από kpetros
  • Like 4
Link to comment
Share on other sites

  • 2 weeks later...

Επιστροφη με ερωτησεις 

 

Εχω παραγγειλει ενα bluetooth module , ο σκοπος ειναι να κανω οτι εκανα απλα με το κινητο αυτην την φορα .Θα δειξει πως θα παει το πραμα οταν ερθει , εχω την εντυπωση πως θα μου βγει η πιστη να το κανω να δουλεψει . 

 

Για τους γνωστες παρακαλω ομως 

 

Καθως εψαχνα , βρηκα αυτο το board  και ενα spark core που λεει πως ειναι για internet of things .... η αληθεια ειναι πως δεν εχω ποιασει το concept αυτης της προοθησης αλλα σαν board μου φαινεται πως εχει παρομοιους ακροδεκτες και επισης wifi  

 

Πιστευω πως θα καταφερω να κανω το arduino να μου δειχνει στοιχεα στο κινητο μου . 

ΟΜΩΣ μετα απο αυτο θα ηθελα να το παω λιγο πιο μακρυα και δεν ειναι αλλο απο το να μπορω να εχω προσβαση μεσω ιντερνετ , μια απλη σελιδα στο browser οπου να κανω την δουλεια μου ... 

 

Εχεις ασχολιθει κανεις πανω σε αυτο ? :p

 

 

 

Link to comment
Share on other sites

  • 1 year later...
πριν 1 ώρα, το μέλος Asxetius έγραψε:

Tι έγινε με το θέμα του bluetooth? :) 

 

Το κουμπωσα , δουλεψε κανονικα με τον κωδικα που βρηκα . Απλα το αρνητικο ειναι πως οι εφαρμογες που εχει στο playstore δεν ειναι και πολυ παραμετροποιησημες . Εμβελεια παραδοξος εχει καλη , βγηκα στο πανω στενο και ακομα το εβλεπε .

Έγινε επεξεργασία από kpetros
Link to comment
Share on other sites

Αν και παλιό το thread, εδώ στο supplementary έχω τον κώδικα που χρησιμοποίησα για ένα project στο διδακτορικό μου που έφτιαξα ένα μικρό συστηματάκι με 3 arduino:

https://link.springer.com/article/10.1007/s00723-015-0680-5

https://static-content.springer.com/esm/art%3A10.1007%2Fs00723-015-0680-5/MediaObjects/723_2015_680_MOESM1_ESM.docx

 

Το μικρό κόστος βοηθάει να βάζεις πολλά μικρά arduin-άκια ξέχωρα για κάθε λειτουργία από ένα ακριβό σύστημα με έναν ακριβό μc.

Αν θέλει κάποιος να φτιάξει οθόνη αφής, έχω τον κώδικα έτοιμο που απλά στέλνει μέσω rs232 ένα χαρακτήρα στο "κεντρικό" arduino (που τρέχει ένα switch case αν θυμάμαι καλά) και από εκεί κάνει τις διάφορες επιλογές με τα ρελέ και τις χρονοκαθυστερήσεις. Λογικά σε μη time sensitive εφαρμογές μπορεί να τρέξουν όλα σε ένα arduino mega, εμείς παίζαμε σε τάξη μεγέθους 100 ms και δεν το ρίσκαρα να το βάλω στο ίδιο με την οθόνη.

 

Για επόμενα project είχα πάρει due με 7άρα οθόνη (αυτό εκεί που έχω τον κώδικα είναι mega με 3.2) αλλά δεν έφτιαξα κάτι τελικά.

Έγινε επεξεργασία από sotiris
Link to comment
Share on other sites

πριν 24 λεπτά, το μέλος sotiris έγραψε:

Αν και παλιό το thread, εδώ στο supplementary έχω τον κώδικα που χρησιμοποίησα για ένα project στο διδακτορικό μου που έφτιαξα ένα μικρό συστηματάκι με 3 arduino:

https://link.springer.com/article/10.1007/s00723-015-0680-5

https://static-content.springer.com/esm/art%3A10.1007%2Fs00723-015-0680-5/MediaObjects/723_2015_680_MOESM1_ESM.docx

 

Το μικρό κόστος βοηθάει να βάζεις πολλά μικρά arduin-άκια ξέχωρα για κάθε λειτουργία από ένα ακριβό σύστημα με έναν ακριβό μc.

Αν θέλει κάποιος να φτιάξει οθόνη αφής, έχω τον κώδικα έτοιμο που απλά στέλνει μέσω rs232 ένα χαρακτήρα στο "κεντρικό" arduino (που τρέχει ένα switch case αν θυμάμαι καλά) και από εκεί κάνει τις διάφορες επιλογές με τα ρελέ και τις χρονοκαθυστερήσεις. Λογικά σε μη time sensitive εφαρμογές μπορεί να τρέξουν όλα σε ένα arduino mega, εμείς παίζαμε σε τάξη μεγέθους 100 ms και δεν το ρίσκαρα να το βάλω στο ίδιο με την οθόνη.

 

Για επόμενα project είχα πάρει due με 7άρα οθόνη (αυτό εκεί που έχω τον κώδικα είναι mega με 3.2) αλλά δεν έφτιαξα κάτι τελικά.

 

 

Το εχεις χρησημοποιησει σε κατι επισημο (αν επιτρεπεται να το βαλεις σε δουλεια  ? Θελω να βαλω κατι PLC για γελοιες λειτουργιες το οποια θα εβγαινε σε 10 γραμμες κωδικα μεσα στο arduino ..... 

Έγινε επεξεργασία από kpetros
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Δημιουργία...

Important Information

Ο ιστότοπος theLab.gr χρησιμοποιεί cookies για να διασφαλίσει την καλύτερη εμπειρία σας κατά την περιήγηση. Μπορείτε να προσαρμόσετε τις ρυθμίσεις των cookies σας , διαφορετικά θα υποθέσουμε ότι είστε εντάξει για να συνεχίσετε.