Arduino Menu Tutorial with a Rotary Encoder and a Nokia 5110 LCD display.

แชร์
ฝัง
  • เผยแพร่เมื่อ 4 พ.ย. 2024

ความคิดเห็น • 156

  • @Educ8s
    @Educ8s  3 หลายเดือนก่อน

    I hope you took away lots from this video. Let me know below!
    PS: I'm creating an OOP course! Sign up at programmingwithnick.com/course for early access and a 50% launch discount.

  • @danljohnston
    @danljohnston 7 ปีที่แล้ว +7

    I too have been wishing for a project like this. There are many variations on the Tube, but none for a non-coder like me to understand. I appreciate the effort put in this. Thanks Nick for all your videos.

  • @jonvannatto
    @jonvannatto 7 ปีที่แล้ว +12

    I prefer buttons and would love to see a version of this menu system for an OLED display. Great video.

    • @rexheck
      @rexheck 6 ปีที่แล้ว +5

      Jon Vannatto you can apply buttons and an oled screen to this concept. I just stumbled across this video looking to make a menu for my oled prject. The links are key here. Adafruit gfx also works with oled. Also buttons are fairly similar to rotary encoders, just less exciting 🤣🤙

  • @edwatters6377
    @edwatters6377 7 ปีที่แล้ว +5

    Nice job... It gives you the option to reduce the number of buttons on a complex project. Setting month, day, year, hour, minute & second on a clock project becomes very easy for an end user.

  • @UpcycleElectronics
    @UpcycleElectronics 7 ปีที่แล้ว +4

    Awesome. Now I have to build another project using the rotary encoder. I'm already working on a power supply that uses your button tutorial for the display. If I hadn't already designed and built the enclosure I would probably use the encoder instead of buttons. A rotating knob is more natural for a percentage type of variable like voltage or current output, in my opinion.

    • @UpcycleElectronics
      @UpcycleElectronics 7 ปีที่แล้ว

      Also, it's easy to salvage a rotary encoder from a computer mouse. The upper rubberized scroll wheel is a rotary encoder. If you cut out the plastic that it's mounted to, it also has a push button under it.

    • @notionSunday
      @notionSunday 7 ปีที่แล้ว

      would probably function better too. I have a couple cheap encoders and they don't work so well.

  • @ajentsong6151
    @ajentsong6151 ปีที่แล้ว

    very nice explaining...for a person with no knowledge in software/coding, in your video explaining what does what in the code has help me understand it a little more then getting an app to actually learn to write example codes that i have no intrest in...you video answer alot of my questions

  • @johnpitsos99
    @johnpitsos99 7 ปีที่แล้ว +1

    Πραγματικά καταπληκτική δουλειά στο κανάλι! Αρκετά από τα tutorial δεν εμβαθύνουν στο θέμα όπως εσύ! Πιστεύω θα ήταν αρκετά ενδιαφέρον αν έκανες ένα tutorial για ένα Midi Controller χρησιμοποιώντας Rotary Encoders, Potentiometers, Buttons και Faders! θα με βοηθούες αρκετά, εφόσον έχω στο νου μου να φτιάξω ένα! Και πάλι ευχαριστώ και καταπληκτική δουλειά!

  • @jacquesdejager5362
    @jacquesdejager5362 6 ปีที่แล้ว +1

    Most difficult solution seen, and it works, congrats, this code can at least be halved and still works My professor at varsity always said if you want a difficult answer ask a student. I first tried to understand the flow before changing it, and it was really difficult. A few switch statements and whala .. if then elseif have priority and is extremely difficult to read, but switch statements can easily be read if used in a state machine, even more if enums is used instead for constants (0,1,2,.. 6).

  • @satrah101
    @satrah101 7 ปีที่แล้ว

    I have has some of these rotary encoder on the bench for a while now. i think i will have to try it out . Thanks for another great video.

  • @sstocker404
    @sstocker404 7 ปีที่แล้ว

    I like rotary encoders instead of buttons, takes up less space, and can do much more. Keep up the great videos.

  • @abdulkadermaqsoud4890
    @abdulkadermaqsoud4890 7 ปีที่แล้ว +8

    Thx man, please do one for 20x4 lcd with I2C interface, sd card, and uno , thx again .LOVE your videos .

  • @emmamendes7211
    @emmamendes7211 7 ปีที่แล้ว +1

    είσαι αρχηγός..... this is a truly enlighting project.... all questions answered....

  • @lintangwisesa
    @lintangwisesa 7 ปีที่แล้ว +1

    Great, Nick! u make me miss my first Nokia phone so much

  • @ozguroztar3385
    @ozguroztar3385 7 ปีที่แล้ว

    It's a topic I've been looking for a long time. Thank you very, very much.

  • @gspowersolutions
    @gspowersolutions 3 ปีที่แล้ว

    I prefer to have encoders than button to minimize the panel space. Thanks for your wonderful video tutorials. 😊

  • @ruslan.zhumabai
    @ruslan.zhumabai 6 ปีที่แล้ว

    You are helping everybody. It is very useful chanel and i think perceptive.

  • @nedstar7378
    @nedstar7378 ปีที่แล้ว

    Thank you very much for sharing and helping me out with this project and excellent information.

  • @ferriswhitehouse1476
    @ferriswhitehouse1476 5 ปีที่แล้ว

    Your code was very well written and easy to adapt. beautiful tutorial

  • @ziopoe
    @ziopoe 7 ปีที่แล้ว

    Yay! I've been waiting for this, thanks!
    Rotary encoder are so much cooler than buttons.

  • @hamedtaha1
    @hamedtaha1 6 ปีที่แล้ว

    like joystick buttons and i'll try to make this menu in a json format , Thanks Nick your videos is always helping

  • @pawelkondratowicz6889
    @pawelkondratowicz6889 7 ปีที่แล้ว +1

    Great job Nick! This tutorial inspired me to my new project :) Thanks a lot!!!

  • @Souvik_IoT_Projects
    @Souvik_IoT_Projects 5 ปีที่แล้ว

    the rotary encoder is always a cool one. but combine rotary encoder with switches, creates damm good interfacing panel. my personal favourite is SMD joysticks. thank you very much for this tutorial.

  • @ramdanisyamsa8795
    @ramdanisyamsa8795 2 ปีที่แล้ว

    Sir, I really like your video. If you like it, please tell me which part I need to change in order to use the 16x2 lcd. Thank you very much

  • @renesolaire8319
    @renesolaire8319 3 ปีที่แล้ว

    Hello ! Very nice ! I’ll try this ! Thank you very much !

  • @coolduckproductions9048
    @coolduckproductions9048 7 ปีที่แล้ว +10

    Good stuff. Can I offer a suggestion. For fixed menus, you might want to consider using the F macro to save RAM and store in flash memory, e.g. String menuItem1 = F("Contrast"); and so on, otherwise you can start eating up precious RAM in more complex projects just for the menus themselves.

    • @peerappel2012
      @peerappel2012 5 ปีที่แล้ว

      aah, so it's that simple : you just need to add an F? Great, thanks for the suggestion!

  • @ArunKumar-us6zn
    @ArunKumar-us6zn 2 ปีที่แล้ว

    this is amazing and is it possible to use another display for eg 16x2

  • @kunalsonone4523
    @kunalsonone4523 7 ปีที่แล้ว

    Great project, well explained.
    Thank you for the detailed explanation and material.
    Looking forward to seeing your new projects.

  • @jonathanbirriel7681
    @jonathanbirriel7681 7 ปีที่แล้ว +2

    Great video, I like encoders because I can purpose them for other things, like speed of motors. Buttons are ok also depending on how many you want to use. One question, wouldn't a switch case statement help better with menu items?

  • @glasseffect
    @glasseffect 6 ปีที่แล้ว +1

    This is a brilliant menu, and it works perfectly on an OLED module with very few modifications to the code.
    I just have a small request. I want to build a nested menu system. For example, if I select contrast, I should see one more menu similar to the first menu.
    Can you help me with a minimalistic code example?
    Thanks!

  • @tinfore
    @tinfore 7 ปีที่แล้ว

    Thanks for the instruction. This will come in handy for many projects!

  • @DogRox
    @DogRox 7 ปีที่แล้ว

    Excellent!! Nice job! the rotary encoder is very handy :-)

  • @kennyFF033
    @kennyFF033 7 ปีที่แล้ว

    I like rotary over just buttons. What I think is really cool is a hybrid... use a 4-way hat switch or buttons of your choice AND a rotary... BAM! best of both worlds, user choice and you can use both to navigate, select and so on. Might be a bit of an ache to code and connect but...
    Thanks for continuously teaching me new stuff and doing so in such a way an old noob like me can understand.

  • @rocketfuel-
    @rocketfuel- 6 ปีที่แล้ว

    Awesome topic. Your work will surly help many people (me included). Thank you very much

  • @sotiriskordas1072
    @sotiriskordas1072 4 ปีที่แล้ว +1

    Would the library for this Nokia Screen work for some OLED I2C screen?

  • @RaviJani
    @RaviJani 7 ปีที่แล้ว

    you are great in explaining stuff. keep up.

  • @Ammy-bc6bh
    @Ammy-bc6bh 5 ปีที่แล้ว

    nice job , well done, i have one question, whatever the values i am entering, it should save so next time if i switch on the arduino, i should get the saved setting not the default one, thanks

  • @pulesjet
    @pulesjet 7 ปีที่แล้ว

    Two Questions Please ? One How large is the Code Compiled ? Two Are the settings completed via menu stored on power down ? On next power up will setting be the same ?

  • @gate6670
    @gate6670 2 ปีที่แล้ว

    Thank you for providing good information.
    I'm trying to make something else out of this. Can you make a function to enter a 4-digit number in the page?

  • @htronica4711
    @htronica4711 2 ปีที่แล้ว

    hi there i haave been trying to migrate this code to one display IC st7789 240x240 pixels but until now not much progress im not using i2c comunication im usin SPI maybe you could make one video with that!! by the waay this video is really nice !! congratulations

  • @jeffbluejets2626
    @jeffbluejets2626 4 ปีที่แล้ว

    All your videos are good , just one very important note for any future ones. Slow down your presentation.
    It is VERY difficult to follow especially where you zoom up and down the code screens and highlight sections.
    Find I have to view many sections sometimes 5 or 6 times and freeze the video just to follow your instructions. Any plan to do the same for a 16x2 I2C LCD display..??

  • @frab88
    @frab88 7 ปีที่แล้ว +2

    I think that a "state machine" would be much more easy to follow than raw `if-then-else` blocks.

  • @2112user
    @2112user 6 ปีที่แล้ว

    Thanks for the video, still learning or trying to learn all the pieces I will need to merge/write for a project I would like to do, so this should help me understand what I need to do. I was wondering, how would you go about having a home page as the first window, and then enter the menu with a button push? For my project I would like to display the time, temp and a stats for those 2 listings (aquarium lights on/off, water temp and if heater is on/off) as the main page or view, then use a menu to adjust the activating/deactivating time/temp on/off points only.

  • @ToymanJoe
    @ToymanJoe ปีที่แล้ว

    The link provided for the Powerbank shows sold out. What do you recommend for a substitute (Power rating)?

  • @pauldusa
    @pauldusa 6 ปีที่แล้ว

    great project, i already converted it to a oled display i2c

    • @jiriburghard
      @jiriburghard 6 ปีที่แล้ว

      Hi, could you share the code for oled display please.

  • @adamastorga3216
    @adamastorga3216 4 ปีที่แล้ว

    I prefer to use the IR remotes because it keeps to the nostalgia of arduino. Using the rotary encoder is the best for nostalgia tho.

  • @ambarishlg
    @ambarishlg 7 ปีที่แล้ว +1

    Hi Nick,
    This is really great option indeed, similar to my in-vehicle infotainment system (control). The complex code is very well simplified here, I must say!
    I would like to see "Incremental Optical Rotary encoder" with stepper motor (i.e. in close - loop ckt/feedback) to determine any movement of shaft (stepper motor's shaft) when motor is in ideal state and its direction like clock-wise or anti-clock-wise.
    The cost of the project / POC (Proof of Concept) could be on higher side, but would be fun and challenging.
    Thank You,
    BR,
    Ambarish

  • @satrah101
    @satrah101 7 ปีที่แล้ว

    tip for the bread board, if you are getting loose connections the pin rail at the back may need to be push in a bit. This fixed loose connections on my board. Some of these cheap china breadboards are fake. Had some troubles with projects check wiring, parts, power, and the rest, but not breadboard.

  • @michelfrance75
    @michelfrance75 5 ปีที่แล้ว

    This solution with rotary encoder associated with a push button is an excellent man-machine interface used in many aeronautical equipment. But the TimerOne library is not compatible with the new Arduino Nano Every board which will replace the Nano basic board and other Arduino board of this family (Uno, ...).
    Is there an alternative library ?

  • @mattlogue1300
    @mattlogue1300 6 ปีที่แล้ว

    I'm doing a thermastat. My control will be a 5-way switch, more akin to buttons I suppose. My wife has MS and the rotation of a knob requires complex wrist movements therefore I went with the 5-way.

  • @adityak3578
    @adityak3578 5 ปีที่แล้ว

    we love you educ8

  • @bugrapolat9501
    @bugrapolat9501 6 ปีที่แล้ว

    Would you show an example where you can read the temperature by selecting the menu with the menu? Can you help me to run different code from selected menus?

  • @abdulazeez.98
    @abdulazeez.98 7 ปีที่แล้ว

    Awesome video as always !

  • @thorbennielsen3845
    @thorbennielsen3845 7 ปีที่แล้ว +1

    Great tutorial. What about make one about running project on battery = low power/sleep?

  • @ДмитрийШаповалов-б5ч
    @ДмитрийШаповалов-б5ч 5 ปีที่แล้ว

    Excellent!! Nice job!

  • @dp8306
    @dp8306 3 ปีที่แล้ว

    Hi Nick, nice menu. I would like to use on ST7920 display. Could you please do a video showing a menu on that type of display?

  • @nilsskansar416
    @nilsskansar416 7 ปีที่แล้ว +2

    Very nice project, Thanks for sharing.
    Is the Nokia 5110 display compatible with 5 volts signal ?
    Or will it get destryed over some time ?
    Nils

    • @jaywon555
      @jaywon555 7 ปีที่แล้ว

      It is mains wise, but it the screen is very touchy for the data lines, after I added in some resistors the screen was solid as a rock.
      learn.sparkfun.com/tutorials/graphic-lcd-hookup-guide

    • @Ed19601
      @Ed19601 7 ปีที่แล้ว

      Wise, as the 5110 is in fact 3.3Volt

  • @danljohnston
    @danljohnston 7 ปีที่แล้ว

    How did you do this?? Awesome. Great work Nick......thanks

  • @usertogo
    @usertogo 6 ปีที่แล้ว

    I just looked at your code, can't believe you don't stick to such common sense practice such as defining the pins with names at the beginning, to make it more readable and easier to modify for other Arduinos, or slight variations in the connection scheme... Would you mind creating this update? Or since I am working on it would you like me to send you my version? Like this:
    #define BacklightPin 7 // pin controlling the backlight LED
    Then use BacklightPin wherever in your code you use 7 to indicate that pin - this is just general good practice, you should always do it like that!
    By the way would it be reasonable to use PWM to control the brightness of the backlight LED?

  • @Holgidolgi
    @Holgidolgi 5 ปีที่แล้ว

    Is it possible to use Rotary Encoder for keybord up ,down, enter (nano leonardo)??

  • @steveshaw259
    @steveshaw259 7 ปีที่แล้ว

    Excellent video, thanks for the explanation.

  • @MrRoman238
    @MrRoman238 7 ปีที่แล้ว

    Great videos you do. Thank you very much for it!

  • @pococitesmieci2137
    @pococitesmieci2137 4 ปีที่แล้ว

    Very nice! I will use this code :D

  • @unalakdogan9416
    @unalakdogan9416 3 ปีที่แล้ว

    Hi, can you do the same example with oled i2c display? Please.

  • @notionSunday
    @notionSunday 7 ปีที่แล้ว +1

    more than a cool Arduino tutorial, I learned how to make better videos. great job! that's how it's done!

  • @gustavozaraza6456
    @gustavozaraza6456 7 ปีที่แล้ว

    Excellent video one of the best

  • @MrBobWareham
    @MrBobWareham 6 ปีที่แล้ว

    Nice video well done good explanation but it would have to be buttons for me

  • @jordanmusleh6305
    @jordanmusleh6305 4 ปีที่แล้ว

    Do i have to buy your code to use it for my projects ..??

  • @gonzalorosa8578
    @gonzalorosa8578 5 ปีที่แล้ว

    Great vid! Question, how could you set limits to the variables' values?

  • @thienanpham7466
    @thienanpham7466 3 ปีที่แล้ว

    can i ask u that i cant find the ClickEncoder library to work with the code sir, plz reply me ! Thank you !!

  • @Perspectologist
    @Perspectologist 7 ปีที่แล้ว +1

    Nice project. I can see value in both buttons and the rotary encoder approach. It sounds like the source isn't up yet so I can only see what was shown in the video. I wonder why not use an array of strings for the menu item text rather than separate variables (menuItem1...)?
    I am an experienced programmer, but new to Arduino. The Arduino IDE seems primitive in some ways. Maybe I don't fully understand how best to use it. It doesn't seem to have any concept of a Project. If I switch micro-controllers I seem to have to change a bunch of global settings. I feel like there should be some way to save the settings in a project. Also there isn't anything like intellisense (context aware code completion). As someone new to the platform code completion would be very helpful. Do these features exist in the official Arduino IDE? I understand there are alternate IDEs that have have some of these features but I haven't explored them yet. Do you have any recommendations? This might be an interesting topic for a future video: Better Arduino IDE alternatives.

    • @Educ8s
      @Educ8s  7 ปีที่แล้ว +2

      Hello friend, thank you very much for your comment. Unfortunately I didn't upload the corrent code file and now I am away from office. I will upload the correct one soon.
      I used seperate variables for the menu items in an effort to make the code easier to understand to people new to programming. Since most of the viewers of the channel have small coding experience I try to make the code as easy as possible to understand.
      Yes, the Arduino IDE is primitive, I miss the code completion as well. I haven't used any other IDE for the Arduino so far. It is a good idea to try different IDEs for Arduino development.
      Cheers

  • @johnpapadopoulos8440
    @johnpapadopoulos8440 6 ปีที่แล้ว

    Πολύ καλό!
    Dear friend, is it possible to use clone's TFT's for your projects? I would like to see much more universal types than Adafruit's which is best but more expensive for the rest of us. Thank you!

  • @karanbirsoin9983
    @karanbirsoin9983 4 ปีที่แล้ว

    After having made the selection trough the encoder lets say the menu item needs a count of 650 as set by the encoder, how do you step out of this in the void loop().. to count 650 and display it on the screen? Will appreciate some clarity on this please.

  • @ElkronAiken
    @ElkronAiken 5 ปีที่แล้ว

    Hi Nick! I want to add a "home screen" in the menu, but apparently there are only two pages to work with. How can i add more pages?

  • @basmangeorge
    @basmangeorge 4 ปีที่แล้ว

    an absolute fantastic thanks

  • @HelmutHassfurther
    @HelmutHassfurther 5 ปีที่แล้ว +2

    the contrast should be set to values between 52 and 67 (varies from display to display) during setup, otherwise nothing is visible from the menu.

    • @helderegbert5509
      @helderegbert5509 ปีที่แล้ว

      I'm trying to get my display to work, but nothing appears! What can it be? I've checked the connections several times, but everything is fine.

  • @punjabilog
    @punjabilog 3 ปีที่แล้ว

    Thank you very much

  • @DudeInAMotorhome
    @DudeInAMotorhome 7 ปีที่แล้ว

    could you do a video of doing a menu like this with the nokia display, rotary encoder and raspberry pi in python or such? really enjoy your videos.

  • @angelicacaus3467
    @angelicacaus3467 7 ปีที่แล้ว

    Hello!
    I'm using the same ramps and I displeased you. But I'm not able to map the encoder pins. Would you have any tips?

  • @sil0_o
    @sil0_o 7 ปีที่แล้ว

    very nice zanel :)

  • @laurenceturner9346
    @laurenceturner9346 3 ปีที่แล้ว

    Is there any way to get the code to run on a Due, some of the libraries seem uno specific..

  • @hdkaudioproject6319
    @hdkaudioproject6319 5 ปีที่แล้ว

    Hi! I found your tutorial very interesting, let me ask more, if I want to click one to enter the submenu, duble click to exit then what function do I have to use, thank you

  • @abdulkadermaqsoud4890
    @abdulkadermaqsoud4890 7 ปีที่แล้ว

    rotary encoders are easier for mounting in projects enclosures.

  • @syncro66500
    @syncro66500 7 ปีที่แล้ว

    Hello, how to exit the interrupt cycle to display something other than the menu without the arduino 328p blocks? I do not see that in the code. can you help me ? thank you very much, because this is very informative

  • @ayhankulaksz1579
    @ayhankulaksz1579 7 ปีที่แล้ว

    good but, i need more items with buttons because i dont have any encoders. Thanks :)

  • @RESO_44
    @RESO_44 ปีที่แล้ว

    Μεχρι στιγμης φτιαχνω μενου με μπουτόν.. συσντομα θα βάλω σε ένα Projectακι μου rotary encoder ! για έναν αρχάριο με μπουτόν και if η δουλειά γίνεται άψογα

  • @gregbrechelt2295
    @gregbrechelt2295 3 ปีที่แล้ว

    Hi Nick, do you do paid jobs? i have a small project and would like someone to program it for me as im not up to the task. if so how do i contact you?

  • @ElectronGordo
    @ElectronGordo 7 ปีที่แล้ว

    thank you for the video :) very useful

  • @merkabaenergy9558
    @merkabaenergy9558 7 ปีที่แล้ว

    Hi could you do a video using one of these screens to display a hall effect sensor activating a relay on a count of detections of the magnet and then turning off after a few more detections please :)

  • @dave-in-nj9393
    @dave-in-nj9393 5 ปีที่แล้ว

    awesome information.

  • @KFlorent13
    @KFlorent13 5 ปีที่แล้ว

    My menu works but I can't get sensor readings into it, my values are not updating at all.
    I have heard of state machine and the use of interrupts but I don't see how to implement it with this code.

  • @orlandomolina6218
    @orlandomolina6218 7 ปีที่แล้ว

    thank you. it is amazing video tutorial.

  • @pong301275cmu
    @pong301275cmu 7 ปีที่แล้ว

    nice work.

  • @kaushikx
    @kaushikx 7 ปีที่แล้ว +1

    can we do it with an i2c display oled?

  • @butchratell7569
    @butchratell7569 3 ปีที่แล้ว

    I NEED TO KNOW HOW TO USE A ROTARY ENCODER AND ONLY USE 60 DEGREES OF ROTATION TO GO FROM 0 TO 12 VOLTS AND ONCE AT 12 BACK TO 0, ( BUT ONLY USE 60 DEGREES OF THE ROTATION, I WANT A TRIGGER LIKE A RC TRIGGER TO OPERATE THE SPEED AND I NED 50 AMPS AT 12 VOLTS SO IT NEEDS MOSFETS OR CTRON MD10C CONTROLLER

  • @peters60813
    @peters60813 7 ปีที่แล้ว

    what is " lastMenuItem = menuitem; " mean in this projeact ?

  • @AbdolazimHasseli
    @AbdolazimHasseli 2 ปีที่แล้ว

    Nice.

  • @tbjjnvfrdhjiuhcrhb688
    @tbjjnvfrdhjiuhcrhb688 7 ปีที่แล้ว

    thank you for the video

    • @Educ8s
      @Educ8s  7 ปีที่แล้ว

      You are welcome!

  • @thegovenor6166
    @thegovenor6166 7 ปีที่แล้ว +1

    He should try to build a simple game with this screen

  • @Trailtraveller
    @Trailtraveller 7 ปีที่แล้ว +2

    Code is not downloadable on the site.. link is not correct.

  • @mirceacraciun4091
    @mirceacraciun4091 7 ปีที่แล้ว

    thank you !