Σελίδα 2 από 2 ΠρώτηΠρώτη 1 2
Εμφάνιση αποτελεσμάτων : 11 έως 18 από 18

Θέμα: arduino και lcd 16x2

  1. #11
    Μέλος
    Εγγραφή
    Jun 2005
    Περιοχή
    Βύρωνας
    Μηνύματα
    129

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από hlias0 Εμφάνιση μηνυμάτων
    Το bracket που σου λείπει στο τέλος είναι λάθος στο copy paste, σωστά? αλλιώς δεν θα έκανε compile.

    Πιστεύω ότι πρέπει να βάλεις μεγαλύτερο κομμάτι από τον κώδικα σου για να βγει άκρη. Το λάθος που περιγράφεις δεν φαίνεται να είναι σε αυτό το κομμάτι που μας δείχνεις.

    Επίσης προσπάθησε να κάνεις clear το lcd πριν γράψεις το επόμενο string.
    αυτός είναι ολοκληρος ο κώδικας:


    Κώδικας:
     // include the library code:
    #include <LiquidCrystal.h>
    
    // initialize the library with the numbers of the interface pins
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
       
        
    void setup() 
    {
      pinMode (8,INPUT);
      pinMode (13,OUTPUT);
     digitalWrite (8, LOW); 
    }
    
    void loop()
    {
      int zoni = 8;  
      if (digitalRead (zoni) == HIGH)
      {
      digitalWrite (13, HIGH);
      lcd.setCursor(0, 0);
      lcd.write("zone 1 anoixti");
      delay(400); //  ΜΕ ΑΥΤΟ ΤΟ DELAY ΚΑΤΙ ΠΑΕΙ ΝΑ ΦΤΙΑΞΕΙ
      }
      else
    {
      digitalWrite (13, LOW);
        lcd.setCursor(0, 0);
      lcd.print("zone 1 kleisti");
    }
    }
    Στην ουσια μου μπερδευει το "Ανοιχτη" "κλειστή"
    Απλά πριν το ανεφερα σαν high low για πιο ευκολα.

    0 Not allowed! Not allowed!

  2. #12
    Μέλος
    Όνομα
    Ηλίας
    Εγγραφή
    Feb 2011
    Περιοχή
    Αθήνα
    Μηνύματα
    47

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από Mr.Linatsa69 Εμφάνιση μηνυμάτων
    Προσπαθώ να φτιάξω ένα προγραμματάκι που να μου λέει το αποτελεσμα (HIGH ή LOW) έχοντας μεσα τον εξής κώδικα

    Κώδικας:
    if (digitalRead (zoni) == HIGH)
      {
      digitalWrite (13, HIGH);
      lcd.setCursor(0, 0);
      lcd.print("HIGH");
      }
      else
    {
      digitalWrite (13, LOW);
        lcd.setCursor(0, 0);
      lcd.print("LOW");
    Το θέμα είναι ότι ελέγχει σωστά και αναβει και σβηνει το pin13 αντίστοιχα.
    Γραφει HIGH η οθόνη, αλλά όταν είναι να αλλάξει σε LOW τα περνάει όλα γρήγορα και δεν βγάζει νόημα.
    Μονο το "Η" δεν αλλάζει στη 4η στήλη και μένει μονιμα εκει.
    Τι κάνω λάθος?
    Χμμ, το ξανασκέφτηκα. Αυτό το κομμάτι κώδικα το έχεις σε loop σωστά? Αν μιλάμε για arduino δηλαδή μέσα στο loop { } function. Όταν το πιν που διαβάζεις είναι LOW εκτελείς συνέχεια τον κώδικα μέσα στο else statement. Και δεν κάνεις clear to lcd.

    To 'Η' μένει στιν τέταρτη στήλη γιατί τυπώνεις το LOW που είναι 3 χαρακτήρες και φτάνουν μέχρι την τρίτη στήλη. Άρα δεν κάνεις overwrite την τέταρτη στήλη που είναι το 'Η΄.

    Βάλε ένα delay στον κώδικα σου και κάνε clear το lcd. Κάπως έτσι:

    Κώδικας:
    void loop( void )
    {
      lcd.clear( );
    
      if (digitalRead (zoni) == HIGH)
      {
          digitalWrite (13, HIGH);
          lcd.setCursor(0, 0);
          lcd.print("HIGH");
       }
       else
       {
           digitalWrite (13, LOW);
           lcd.setCursor(0, 0);
           lcd.print("LOW");
        }
        
        delay_ms( 100 );
    }

    0 Not allowed! Not allowed!

  3. #13
    Μέλος
    Εγγραφή
    Jun 2005
    Περιοχή
    Βύρωνας
    Μηνύματα
    129

    Προεπιλογή

    Ναι arduino είναι.
    Δυστυχώς ούτε έτσι έπαιξε.
    το μονο που βρίσκω και παίζει είναι με το delay (400) όπως έβαλα πριν ... πφφφ

    0 Not allowed! Not allowed!

  4. #14
    Μέλος
    Όνομα
    Ηλίας
    Εγγραφή
    Feb 2011
    Περιοχή
    Αθήνα
    Μηνύματα
    47

    Προεπιλογή

    Χμμ. περιεργο! Το delay_ms( ) μπορεί να είναι λάθος δεν ξέρω άν είναι σωστό call για arduino. Για να σου δώσω να καταλάβεις το έβαλα.

    Εγώ πάντως θα το δοκίμαζα ώς εξής :

    Κώδικας:
    void loop( )
    {
        lcd.clear( );
        lcd.setCursor( 0, 0 );
    
        if( digitalRead( zoni ) == HIGH )
        {
             digitalWrite( 13, HIGH );
             lcd.print( "HIGH" );
        }
        else
        {
             digitalWrite( 13, LOW );
             lcd.print( "LOW" );
        }
    
        delay( 500 ); // auto to delay einai se msec??
    }

    0 Not allowed! Not allowed!

  5. #15
    Μέλος Το avatar του χρήστη her
    Όνομα
    Ηρακλής
    Εγγραφή
    Jun 2007
    Περιοχή
    Αργυρούπολη
    Μηνύματα
    1.121

    Προεπιλογή

    Σε arduino μπορώ να συνδέσω 2 οθόνες; Όχι παράλληλα, θέλω να απεικονίζω διαφορετικά στοιχειά στην κάθε μια.

    0 Not allowed! Not allowed!

  6. #16
    Μέλος Το avatar του χρήστη dog80
    Όνομα
    Γιάννης
    Εγγραφή
    May 2011
    Περιοχή
    Αθήνα
    Μηνύματα
    507

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από her Εμφάνιση μηνυμάτων
    Σε arduino μπορώ να συνδέσω 2 οθόνες; Όχι παράλληλα, θέλω να απεικονίζω διαφορετικά στοιχειά στην κάθε μια.

    Ναί, και μάλιστα χρειάζεται μόλις ένα pin για κάθε επιπλέον οθόνη: http://forum.arduino.cc/index.php/topic,5014.0.html


    0 Not allowed! Not allowed!

  7. 2 μέλη ευχαρίστησαν τον dog80 για αυτό το χρήσιμο μήνυμα:

    αλπινιστης (07-03-15), her (19-09-14)

  8. #17
    Μέλος Το avatar του χρήστη eleCtroAsxetos
    Όνομα
    Δημητρης
    Εγγραφή
    Aug 2010
    Περιοχή
    Ηράκλειο
    Μηνύματα
    828

    Προεπιλογή

    παιδια γράφω εδω για να μην ανοιγω νεο θεμα. Δε θελω να επισκευασω κατι απλα θελω να ρωτησω μηπως και ισως τι εκανα λαθος.
    Χθες εκαψα μια οθονη arduino την κλασσικη 16χ2 οπως παραπανω αλλα με μπλε backlight. Δεν δειχνει τιποτα πλεον εντελως νεκρη.
    Προσπαθησα να δουλεψω ενα προγραμμα που αναφεροταν σε arduino nano αλλα εγω το περασα σε arduino uno. Το προγραμμα χρησιμοποιουσε τα αναλογικα pin Α0-Α5 για ψηφιακες εξοδους καθως τα εν γενει ψηφιακα ηταν αφιερωμενα αλλου. Η οθονη δοκιμαστικε και δεν δουλευε σωστα δεν εδειχνε γραμματα αλλα λειτουργουσε τουλαχιστον. Απογοητευτηκα ψαχτηκα δεν εβγαλα ακρη το αποσυνδεσα. Στη συνεχεια σκεφτηκα μηπως ειχε καποιο προβλημα η οθονη.
    Περναω ενα απλο κωδικα HELLO WORLD με ψηφιακες εξοδους LCD στα κλασσικα πινς D12 D11 κτλ αλλα πλεον η οθονη οχι απλα δουλευε και δεν εδειχνε τα γραμματα αλλα ηταν και εντελως νεκρη. Πλεον δε βλεπεεις τιποτα μενει μαυρη. Δοκιμασα και με το contrast...Τι κοντραστ
    Απο οσα σας λεω ειναι δυνατον να καει μια οθονη? Η απλα εκανα εγω ισως μια λαθος κινηση που δε θυμαμαι ή ήταν να πεθανει.
    Σας ευχαριστω οπως και να ναι

    0 Not allowed! Not allowed!

  9. #18
    Μέλος Το avatar του χρήστη giannopoulos.stavros
    Όνομα
    Уфбэспт
    Εγγραφή
    Feb 2013
    Περιοχή
    Philippines
    Μηνύματα
    138

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από Mr.Linatsa69 Εμφάνιση μηνυμάτων
    αυτός είναι ολοκληρος ο κώδικας:


    Κώδικας:
     // include the library code:
    #include <LiquidCrystal.h>
    
    // initialize the library with the numbers of the interface pins
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
       
        
    void setup() 
    {
      pinMode (8,INPUT);
      pinMode (13,OUTPUT);
     digitalWrite (8, LOW); 
    }
    
    void loop()
    {
      int zoni = 8;  
      if (digitalRead (zoni) == HIGH)
      {
      digitalWrite (13, HIGH);
      lcd.setCursor(0, 0);
      lcd.write("zone 1 anoixti");
      delay(400); //  ΜΕ ΑΥΤΟ ΤΟ DELAY ΚΑΤΙ ΠΑΕΙ ΝΑ ΦΤΙΑΞΕΙ
      }
      else
    {
      digitalWrite (13, LOW);
        lcd.setCursor(0, 0);
      lcd.print("zone 1 kleisti");
    }
    }
    Στην ουσια μου μπερδευει το "Ανοιχτη" "κλειστή"
    Απλά πριν το ανεφερα σαν high low για πιο ευκολα.

    Ο κώδικας σου είναι λειψός, δοκίμασε αυτό

    #include <LiquidCrystal.h>


    // initialize the library with the numbers of the interface pins
    LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


    // constants won't change. They're used here to
    // set pin numbers:
    const int buttonPin = 8; // the number of the pushbutton pin
    const int ledPin = 13; // the number of the LED pin


    // variables will change:
    int buttonState = 0; // variable for reading the pushbutton status


    void setup() {
    // initialize the LED pin as an output:
    lcd.begin(16, 2);
    pinMode(ledPin, OUTPUT);
    // initialize the pushbutton pin as an input:
    pinMode(buttonPin, INPUT);
    lcd.print("hello, world!");
    delay(1000);
    lcd.clear();


    }


    void loop(){
    // read the state of the pushbutton value:
    buttonState = digitalRead(buttonPin);


    // check if the pushbutton is pressed.
    // if it is, the buttonState is HIGH:
    if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);

    lcd.setCursor(0, 0);
    lcd.write("zone 1 anoixti");
    delay(100);
    }
    else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
    lcd.setCursor(0, 0);
    lcd.print("zone 1 kleisti");
    delay(100);
    }
    }

    1 Not allowed! Not allowed!

Σελίδα 2 από 2 ΠρώτηΠρώτη 1 2

Παρόμοια Θέματα

  1. Lcd vu meter 16x2
    By kokoblue in forum Κυκλώματα Εικόνας-'Ηχου & Φωτισμού
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 08-10-13, 21:42
  2. lcd 16X2 alphanumeric
    By TRIAC in forum Εξαρτήματα & Datasheets
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 02-03-13, 12:42
  3. lcd 16x2 εμφανιζει P και o μονο
    By Minakos in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 22
    Τελευταίο Μήνυμα: 24-05-11, 22:23
  4. SOS lcd 16x2 Αρχάριος
    By stergeol in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 22-06-08, 22:40
  5. lcd 16x2
    By spas in forum Μικροελεγκτές
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 26-08-05, 20:29

Tags for this Thread

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας