Εμφάνιση αποτελεσμάτων : 1 έως 7 από 7

Θέμα: ATTiny85 Traffic Light +1

  1. #1
    Μέλος
    Όνομα
    vagelis
    Εγγραφή
    Nov 2019
    Περιοχή
    Αθήνα
    Μηνύματα
    316

    Προεπιλογή ATTiny85 Traffic Light +1

    Χαιρετω και παλι.
    Ενδιαφερομαι για οπλισμο 4 ρελαι απο Attiny85, μεσω button.
    Βρηκα το ATTiny85 Traffic Light αλλα οδηγει 3 Relay. Pin 2 (Out 3) θα εβαζα τον 4ο Ρελαι.

    Προσπαθησα να προσθεσω στον κωδικα, αλλα δεν
    Ο,που εχω //+ στο τελος, η Line ειναι προσθετη. ΚΑΙ : //If yellow is on, turn it off and light up blue.
    Μπορει να βοηθησει καποιος -α ;
    Σας Ευχαριστω και παλι


    #define REDPIN 0
    #define YELLOWPIN 1
    #define GREENPIN 4
    #define BLUEPIN 5 //+
    #define BUTTONPIN 2
    #define NUMLIGHTS 3


    /*
    For the arrays:
    - Red will be referenced by array index 0.
    - Yellow will be referenced by array index 1.
    - Green will be referenced by array index 2.
    */


    //We will start with red in the "on" state, which will be represented by a 1. 0 is "off."
    int lightState[] = {1,0,0};


    //All lights should start dim.
    int lightLuminosity[] = {0,0,0};


    //We'll need some variables to monitor the button.
    int buttonState = LOW;
    int lastButtonReading = LOW;
    int lastButtonState=LOW;
    long lastDebounceTime = 0;
    long debounceDelay = 50;


    /*
    Set the pinMode for each of the ATTiny's pins.
    */
    void setup() {
    pinMode(REDPIN, OUTPUT);
    pinMode(YELLOWPIN, OUTPUT);
    pinMode(GREENPIN, OUTPUT);
    pinMode(BLUEPIN, OUTPUT);
    pinMode(BUTTONPIN, INPUT);
    }


    /*
    Each time we loop through the program we should check the state of our pushbutton, then
    fade the lights.
    */
    void loop() {
    monitorButton();
    fadeLights();
    }


    /*
    Each time we loop through the program, we check to see if the state (pressed or not pressed)
    of our pushbutton has changed. If it has changed, we call the buttonStateChanged() function.
    */
    void monitorButton() {
    //Read the current state of the button.
    int reading = digitalRead(BUTTONPIN);


    if (reading != lastButtonReading) {
    lastDebounceTime = millis();
    }

    if ((millis() - lastDebounceTime) > debounceDelay) {
    buttonState = reading;

    if (lastButtonState!=buttonState) {
    buttonStateChanged();
    }

    lastButtonState = buttonState;
    }

    lastButtonReading = reading;
    }


    /*
    If the button state has changed to "not pressed", we want to advance the light state.
    Said a different way, we don't care when the user presses down on the button. We care
    when the user releases the button.
    */
    void buttonStateChanged() {
    if (buttonState==LOW) {
    advanceLightState();
    }
    }


    /*
    This function simply advances from red to green, from green to yellow, and finally from
    yellow to red.
    */
    void advanceLightState() {
    //If red is on, turn it off and light up green.
    if (lightState[0]==1) {
    lightState[0]=0;
    lightState[2]=1;
    return;
    }

    //If yellow is on, turn it off and light up red.
    if (lightState[1]==1) {
    lightState[1]=0;
    lightState[0]=1;
    return;
    }

    //If green is on, turn it off and light up yellow.
    if (lightState[2]==1) {
    lightState[2]=0;
    lightState[1]=1;
    return;
    }


    //If yellow is on, turn it off and light up blue. +
    if (lightState[2]==1) { //+
    lightState[2]=0; //+
    lightState[1]=1; //+
    return; //+
    }
    }


    /*
    We don't want our lights to simply blink on and off instantly! We want them to fade
    pleasantly from off to on, and back again. We do this using pulse width modulation.
    If we analogWrite the value "0" to an LED, it will be fully dark.
    If we analogWrite the value "255" to an LED, it will be fully bright.
    If we analogWrite the value "128" to an LED, it will be about half-way bright.
    */
    void fadeLights() {
    int i;

    //Loop through each light. If the light is set to "on," increase its brightness. Otherwise, decrease the brightness.
    for (i=0; i<NUMLIGHTS; i++) {
    if (lightState[i]==1) {
    //Increase the luminosity if it is less than 255.
    if (lightLuminosity[i]<255) {
    lightLuminosity[i]++;
    }
    }
    if (lightState[i]==0) {
    //Increase the luminosity if it is less than 255.
    if (lightLuminosity[i]>0) {
    lightLuminosity[i]--;
    }
    }
    }

    analogWrite(REDPIN, lightLuminosity[0]);
    analogWrite(YELLOWPIN, lightLuminosity[1]);
    analogWrite(GREENPIN, lightLuminosity[2]);
    analogWrite(BLUEPIN, lightLuminosity[2]); //+
    }

    0 Not allowed! Not allowed!

  2. #2
    Μέλος
    Όνομα
    Μάρκος
    Εγγραφή
    Mar 2012
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.951

    Προεπιλογή

    [6] #define NUMLIGHTS 4
    [18] int lightState[] = {1,0,0,0};
    [22] int lightLuminosity[] = {0,0,0,0};
    [123] lightState[2]=0; //+ --------------------------------- εδώ είναι λίγο μπερδεμένο μετά από ποιο λεντάκι θες να ανάβει το μπλε;
    [124] lightState[3]=1; //+
    [159] analogWrite(BLUEPIN, lightLuminosity[3]); //+

    Από το 98 έως το 127 καθορίζεται ο τρόπος που θα ανάβουν τα LED προφανώς πρωσομοιώνωντας τα φανάρια, μάλλον θα χρειαστούν περισσότερες αλλαγές ανάλογα με το πως και ποια σειρά θες να ανάβουν τα LED.

    Κάνε αυτές τις αλλαγές και βλέπουμε ... μπορεί να ξέφυγε κάτι....

    0 Not allowed! Not allowed!
    Όταν όλα τα άλλα έχουν αποτύχει..... RTFM.
    Short instructions: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>> Good Luck!
    https://diyelectronics-gr.blogspot.gr https://www.facebook.com/groups/872041030200567

  3. #3
    Μέλος
    Όνομα
    vagelis
    Εγγραφή
    Nov 2019
    Περιοχή
    Αθήνα
    Μηνύματα
    316

    Προεπιλογή

    Το δοκιμασα, δεν. Στο ποδαρακι 2 το μπλε δεν . Συνεχιζει οπως ηταν.
    Κοκκινο αναμενο οταν τροφοδοσια, μετα πεασσινο και μετα κιτρινο.
    Μετα το κιτρινο ηθελα το μπλε και υστερα το κοκκινο
    Αρχικο κωδικα βρηκα εδω :
    https://www.instructables.com/ATTiny85-Traffic-Light/
    Αν μπορεις αλλη μια προσπαθεια και το αφηνουμε, δεν πειραζει.
    Σε ευχαριστω.

    0 Not allowed! Not allowed!

  4. #4
    Μέλος
    Όνομα
    Μάρκος
    Εγγραφή
    Mar 2012
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.951

    Προεπιλογή

    Το μπλε LED βάλτο στο πιν 2 και δήλωσε το :
    #define BLUEPIN 3 // ποδαράκι 2

    και αντικατέστησε την function:

    void advanceLightState() {
    //If red is on, turn it off and light up green.
    if (lightState[0]==1) {
    lightState[0]=0;
    lightState[2]=1;
    return;
    }


    //If yellow is on, turn it off and light up blue.
    if (lightState[1]==1) {
    lightState[1]=0;
    lightState[3]=1;
    return;
    }


    //If green is on, turn it off and light up yellow.
    if (lightState[2]==1) {
    lightState[2]=0;
    lightState[1]=1;
    return;
    }




    //If blue is on, turn it off and light up red. +
    if (lightState[3]==1) { //+
    lightState[3]=0; //+
    lightState[0]=1; //+
    return; //+
    }
    }

    0 Not allowed! Not allowed!
    Όταν όλα τα άλλα έχουν αποτύχει..... RTFM.
    Short instructions: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>> Good Luck!
    https://diyelectronics-gr.blogspot.gr https://www.facebook.com/groups/872041030200567

  5. #5
    Μέλος
    Όνομα
    vagelis
    Εγγραφή
    Nov 2019
    Περιοχή
    Αθήνα
    Μηνύματα
    316

    Προεπιλογή

    καλυτερευσε
    Power on >> αναβει κοκκινο
    1ο πατημα button >> αναβει πρασσινο
    2ο πατημα button >> αναβει κιτρινο
    3ο πατημα button >> σβηστα ολλα , θα ηθελα να αναβει το μπλε . Και να το αφησουμε ετσι, με καλυπτει
    4ο πατημα button >> αναβει κοκκινο
    Με καλυπτουν αυτα τα βηματα , ηθελα ενα κενο 0 αναμεσα σε κιτρινο και κοκκινο . Στην εξοδο του μπλε δεν θα εβαζα κατι.
    Σε ευχαριστω πολυ.

    0 Not allowed! Not allowed!

  6. #6
    Μέλος
    Όνομα
    Μάρκος
    Εγγραφή
    Mar 2012
    Περιοχή
    Θεσσαλονίκη
    Μηνύματα
    2.951

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από Vagelis64 Εμφάνιση μηνυμάτων
    καλυτερευσε
    Power on >> αναβει κοκκινο
    1ο πατημα button >> αναβει πρασσινο
    2ο πατημα button >> αναβει κιτρινο
    3ο πατημα button >> σβηστα ολλα , θα ηθελα να αναβει το μπλε . Και να το αφησουμε ετσι, με καλυπτει
    4ο πατημα button >> αναβει κοκκινο
    Με καλυπτουν αυτα τα βηματα , ηθελα ενα κενο 0 αναμεσα σε κιτρινο και κοκκινο . Στην εξοδο του μπλε δεν θα εβαζα κατι.
    Σε ευχαριστω πολυ.
    Το μη άναμμα του LED μοιάζει να είναι πρόβλημα hardware. Μέτρα με το πολύμετρο στο ποδαράκι 2 αν βγάζει τάση την ώρα που πρέπει να ανάβει το μπλε LED
    Υποθέτω ότι το διόρθωσες αυτό
    #define BLUEPIN 3 // ποδαράκι 2
    στην αρχή του προγράμματος.

    0 Not allowed! Not allowed!
    Όταν όλα τα άλλα έχουν αποτύχει..... RTFM.
    Short instructions: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>> Good Luck!
    https://diyelectronics-gr.blogspot.gr https://www.facebook.com/groups/872041030200567

  7. #7
    Μέλος
    Όνομα
    vagelis
    Εγγραφή
    Nov 2019
    Περιοχή
    Αθήνα
    Μηνύματα
    316

    Προεπιλογή

    Ολλα καλα. NUMLIGHTS 3 σε 4, τοχα ξεχασει.

    0 Not allowed! Not allowed!

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

  1. Παίζοντας με το ATtiny85
    By stratos12 in forum Παρουσίαση Πρόχειρων Κατασκευών
    Απαντήσεις: 5
    Τελευταίο Μήνυμα: 12-04-22, 17:54
  2. προγραμματισμος atTiny85
    By vellamos in forum Μικροελεγκτές
    Απαντήσεις: 4
    Τελευταίο Μήνυμα: 12-08-19, 16:02
  3. Watch air traffic - live
    By KOKAR in forum Γενική Συζήτηση
    Απαντήσεις: 6
    Τελευταίο Μήνυμα: 22-08-15, 18:55
  4. Aντιγραφη ATTINY85
    By Τέσλα in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 58
    Τελευταίο Μήνυμα: 03-05-15, 13:57
  5. Ραδιοκασετόφωνο 4000 TRAFFIC
    By ΜαστροΣάββας in forum Car Audio & Theater
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 27-09-11, 19:53

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

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