- 62
- 235 002
ForOurGood
Japan
เข้าร่วมเมื่อ 29 ธ.ค. 2012
I am not really sure where this channel is going! But the channel name sets the expectation that the hope is both the viewer and I can get something positive out of the experience. If the content interests you please feel free to subscribe and follow along. Have a comment or question, go for it!!
The BEST DIY PCB Tutorial (ForOurGood PCB Method)
If you want to know the best way to make your own DIY PCB's, well you have stumbled on the right video...
This is a special episode, spun off from my original series, where I challenged myself to make the best possible DIY PCB’s using commonly available low cost CNC technologies. (Spoiler, I succeeded!)
This is a special episode, spun off from my original series, where I challenged myself to make the best possible DIY PCB’s using commonly available low cost CNC technologies. (Spoiler, I succeeded!)
มุมมอง: 10 530
วีดีโอ
EP8 - CNC3018 Rebuild - DIY Brushless Spindle
มุมมอง 4.4K9 หลายเดือนก่อน
So this is a big one, and possibly the most insane and challenging part of this project. In this episode, I attempt to make my own brushless spindle for my rebuilt CNC3018. Just watch it.. or at least some of it !!! This is the eigth episode in a series where I upgrade my cheap 3018 CNC in an effort to improve its precision, performance and work area size.
EP7 - CNC3018 Rebuild - DIY CNC Controller
มุมมอง 1K9 หลายเดือนก่อน
Finally in the home stretch for this little project, in this episode I will show you my controller that I made for the CNC3018. Also included allot of information about making your own controller, as well as the relevent settings. If you are so inclined, check it out! This is the seventh episode in a series where I upgrade my cheap 3018 CNC in an effort to improve its precision, performance and...
EP6 - CNC3018 Rebuild - Assembly Process
มุมมอง 1K9 หลายเดือนก่อน
In this video, we get to put the CNC3018 back together into a recognisable form, and it's one big leap towards having an operational CNC again. (Yay!!) This is the sixth episode in a series where I upgrade my cheap 3018 CNC in an effort to improve its precision, performance and work area size.
EP5 - CNC3018 Rebuild - Precision Homing Sensors
มุมมอง 5469 หลายเดือนก่อน
I this episode I will show you how I made my own precision homing sensors for my CNC3018. Hope you enjoy! This is the fifth episode in a series where I upgrade my cheap 3018 CNC in an effort to improve its precision, performance and work area size.
EP4 - CNC3018 Rebuild - Lead Screw Hardware
มุมมอง 45310 หลายเดือนก่อน
Heaps of mini-lathe action in this episode, where I machine up a bunch of parts related to trying to get the CNC's lead screw to behave in a more precise manner! (hopefully..) This is the fourth episode in a series where I upgrade my cheap 3018 CNC in an effort to improve its precision, performance and work area size.
EP3 - CNC3018 Rebuild - Linear Bearing Rods
มุมมอง 52110 หลายเดือนก่อน
In this episode, I come up with a way to mount the new larger 12mm linear bearing rods I purchased for my CNC bed. Includes a heap of mini-lathe work, so if you're interested in that sort of thing, then check it out! This is the third episode in a series where I upgrade my cheap 3018 CNC in an effort to improve its precision, performance and work area size.
EP2 - CNC3018 Rebuild - Upsizing the Frame
มุมมอง 60410 หลายเดือนก่อน
In this episode, I expand, strengthen and drill a heap of new holes in the original frame panels that came with the 3018 CNC.
EP1 - CNC3018 Rebuild - Intro & Initial Build
มุมมอง 1.6K10 หลายเดือนก่อน
In this episode, I will discuss how I intend to upgrade the CNC, and I will also make a start on some of the larger assemblies that will help my lock in the final plan for the structure and size of the final CNC. This is the first episode in a series where I upgrade my cheap 3018 CNC in an effort to improve its precision, performance and work area size.
EP7 - How to Program Arduino - New Menu with Class and I2C LCD
มุมมอง 14Kปีที่แล้ว
In this episode, I revisit my menu design, and greatly simplify the code, all with the help of a custom button class (which I will show you how to make). Additionally, I am using a larger Liquid Crystal display, controlled via an I2C interface board, just to add some spice. This is the seventh episode in a series where I will be providing some practical lessons on how to write programs using Ar...
EP4 - Solar Controller - ACO & Inverter Control
มุมมอง 248ปีที่แล้ว
This is the final episode for this particular solar controller project. In this episode, I will show you how I implemented the control of the Automatic Change-Over and the Inverter. This is episode 4 in a series about me developing my own home solar control and monitoring system.
EP3 - Solar Controller - Monitoring Power
มุมมอง 292ปีที่แล้ว
In this episode, we get into the nitty gritty of monitoring the power generation, storage and usage with my solar controller. I also give a somewhat in-depth discussion about how to accurately measure currents by using a shunt, possibly will send some people to sleep, but hopefully useful to at least someone. This is episode 3 in a series about me developing my own home solar control and monito...
EP2 - Solar Controller - Smart Power Supply
มุมมอง 245ปีที่แล้ว
In this episode, I show you how I built an intelligent power supply for my solar controller. This power supply includes a backup battery system, as well as the ability to self-monitor, and intelligently control itself. This is episode 2 in a series about me developing my own home solar control and monitoring system. As I discuss in this video, here is a link to a related video by Andreas Spiess...
EP1 - Solar Controller - Project Introduction
มุมมอง 446ปีที่แล้ว
This series will be all about me developing my own home solar control and monitoring system. For this first episode I am giving some background on the project, as well as introducing the general design of the system I will build.
EP6 - How to Program Arduino - Full Listing for UV Box Timer
มุมมอง 1.8Kปีที่แล้ว
This is an episode made in collaboration with my own DIY PCB series. In this episode I will walk you through how to make the code I made for a ATtiny1616 which controls various aspects of that UV Exposer Box. Actually, there is allot of good stuff in this episode, so I highly recommend you check it out! This is the sixth episode in a series where I will be providing some practical lessons on ho...
EP11 - DIY PCB - Making a UV Light Box Enclosure
มุมมอง 1.4Kปีที่แล้ว
EP11 - DIY PCB - Making a UV Light Box Enclosure
EP10 - DIY PCB - Making a UV Light Controller PCB
มุมมอง 1.8Kปีที่แล้ว
EP10 - DIY PCB - Making a UV Light Controller PCB
EP9 - DIY PCB - SMD Hot Plate Controller (REX-C100 + NI-A66)
มุมมอง 1.7K2 ปีที่แล้ว
EP9 - DIY PCB - SMD Hot Plate Controller (REX-C100 NI-A66)
EP5 - How to Program Arduino - Save Settings in EEPROM
มุมมอง 4.4K2 ปีที่แล้ว
EP5 - How to Program Arduino - Save Settings in EEPROM
EP8 - DIY PCB - Corner Probe for CNC3018 (Contactless)
มุมมอง 3.1K2 ปีที่แล้ว
EP8 - DIY PCB - Corner Probe for CNC3018 (Contactless)
EP4 - How to Program Arduino - Displays, LCD Menu & PlatformIO
มุมมอง 5K2 ปีที่แล้ว
EP4 - How to Program Arduino - Displays, LCD Menu & PlatformIO
EP7 - DIY PCB - Best DIY PCB EVER! (Double Sided SMD)
มุมมอง 16K2 ปีที่แล้ว
EP7 - DIY PCB - Best DIY PCB EVER! (Double Sided SMD)
EP6 - DIY PCB - Silkscreen UV Resin Coating
มุมมอง 9K2 ปีที่แล้ว
EP6 - DIY PCB - Silkscreen UV Resin Coating
EP3 - How to Program Arduino - Repeat Key, Long Press & Multi-Press
มุมมอง 5K2 ปีที่แล้ว
EP3 - How to Program Arduino - Repeat Key, Long Press & Multi-Press
EP5 - DIY PCB - Single Sided PCB made with CNC3018
มุมมอง 4.6K2 ปีที่แล้ว
EP5 - DIY PCB - Single Sided PCB made with CNC3018
EP4 - DIY PCB - Laser Etching Experiments
มุมมอง 26K2 ปีที่แล้ว
EP4 - DIY PCB - Laser Etching Experiments
EP16 - Mini Lathe Upgrade - Quick Change Tool Trouble
มุมมอง 5092 ปีที่แล้ว
EP16 - Mini Lathe Upgrade - Quick Change Tool Trouble
EP2 - DIY PCB - Clamp & Height Probe for CNC3018
มุมมอง 1.8K2 ปีที่แล้ว
EP2 - DIY PCB - Clamp & Height Probe for CNC3018
Put a piece of scrap PCB under the other end of the clamp so that the clamp is parallel to the machine bed when you tighten the clamp screws. That will provide a better clamping area on the board, i.e. flat against the surface of the board and not just along the edge. I know lasers don't impart any force on the workpiece, but it's just good practice.
@@trhosking the clamps are long, thick and cut with a slot to ensure the clamping force is relatively flat (see episode 2 for more info). Possibly the slots could be a little deeper, but over it does the job good enough for this application. Your point however is very much valid, the way the clamping force is applied is important! Thanks for the comment.
You have been watching This Old Tony though.
Nice Job and fantastic research well done . I try make ploter using IR led because hawe regular raund dot but problem whot i hawe is mechanical movement in axis . I use GRBL board and small stepers belts GT2 and teoreticly resolution is 10 micron but when i try clean area betwen traces all lose aligment like stepers lose steeps but is not this because if i use onli contur its ok its like board dont respect position from gcode and use tolerance to make more round numbers ich movement incres this tloerance error and if my dot move every 0.03mm its more error in every mm but if i move 200mm axis move perfect at 200mm. Whot leadscrew you hawe in your router ? Probably i leaw my idea use belts and i use leadscrews with 2mm pitch or 4mm pitch . Whot you think
Thanks for your comment and query. I don't think you will get the required precision using belts, I am using basic leadscrews purchased from Ali-Express with 2mm pitch and 4mm lead, they work well with good precision up to speeds of 500mm/min. Please see other videos on my channel for more information.
you can share the chemicals you use? Where can I buy them?
@@witawat I think I cover this is this video, as well as earlier videos. The only "chemicals" I use is generic 99% IPA as well as generic Ferric Chloride. This stuff is typically produced and branded locally in each individual country, so the local Japanese brand I am currently using is likely not useful information for the bulk of viewers (I don't even remember the brand I am currently using). Typically just buy this stuff from Amazon or other similar sites. I am not sure if that answers your question, so if you need more information then could you be a little more specific? Thanks for the question!
UV Color and 1:20:50 What TURBO ?
@witawat Green "WNB" UV resin and White "Mechanic" both purchased from AliExpress. The Turbo is a simple CA glue (super glue) accelerator, it is a local Japanese brand, but you should be able to find something similar locally.
ino file pl.
got no facilities to upoad stl files but can up;oad youtube video what a total time waster
Happy New Year to you! Hope you have a wonderful 2025!🎊 Really disappointing to hear I spent all those hours making this video, only to have it be a total waste of your time.... Hopefully you will find a better channel that fits with what you need. 👍 Wishing you all the best with your CNC endeavours 😊
pretty good made, i love these improvals, great done !!
@@thomasschmidt5546 I am so glad you liked it! If you're interested, check my more recent videos about major upgrades to my CNC. Thanks for watching!
Nice video Can you share the 3D files for the switches
@@Edmorbus Thanks for the query, but I am very sorry to say, that I don't have any mechanism setup to share files. The design of the switch mounts are actually pretty simple though, and if you are not familiar with 3D design software it would be a great chance to learn. Thanks for watching!
Hi, it took a while but I had to make a UV box first. The box was inspired by your excellent video of your box. I changed a few things but it's very similar to yours. I have now made the video (if you can call it that but I did say I am not good at it LOL). I now need to find a better brayer and should be able get better results. Anyways, this is the link to the video th-cam.com/video/GnlDSti6LKw/w-d-xo.html
@@TankTurk Great video, I honestly found it very interesting. Using the brayer actually gives a much better result than I was expecting, so even if just for comparison I will likely give it a go at some point. Thanks for sharing, and I was also humbled to see your effort in making your own UV box using some inspiration from my design, I never thought I would see something like that. I also reckon your video production is just fine the way it is, nice and straight forward so don't change a thing, it will be interesting to see what you make next! 👍
@@ForOurGood, thanks for your kind comment. I did write a reply earlier but it seems to have vanished! LOL I do like your UV box so had to replicate it. It took me a few goes printing it but got there in the end. My PCB doesn't look as nice as yours but it works so I'm happy Yeah, try out the brayer and let me know how you get on. I am going to make a PCB next using what I learned from you. I might make a video of it but not sure yet. Thanks again for your excellent videos
@@TankTurk don't know where the original comment went, seems TH-cam has eaten it.. happen sometimes. It was not in quarantine, so I guess it will remain a mystery.
I had the program going until about 30 min in then i spent 12 hours trying to figure out what i messed up. Your editing sucks! I'm partially blind, i can't follow you fast enough, even in slow mo on some parts
i had a similar problem...
@@bikeradam if it is still of use to you, you can find the full listing for the code in the response of one of the comments below. Apologies for wasting 12 or so hours of your time, and seemingly the 60 or so hours for me making this video for you, but it was my first attempt at making a video like this, so it probably was unlikely to be perfect, and I am happy to admit it is not (even though I tried my best!). Hopefully there will be other channels out there that will provide a better fit for what you want to achieve, seems there are hundreds of channels out there teaching this stuff, and all for free! (It's a great time to learn code it seems) No matter what thanks for taking the time to leave some feedback! ❤️
It does not necessary to define a global root_Pos, instead a static local sub_Pos is enough.
@@dianchaowang The global root_Pos is intentionally used to return the root menu pointer back to where it was. It is not actually necessary, but it was my intended behaviour in this case. Thanks for the comment 🙂
@@ForOurGood BTW, you video is super! I learned a lot. Keep up the good work!😁
I wonder if you could coat the boards evenly by using an orbital shaker to shake the board and spread the resin out. ?
@stephenhumble7627 It's a interesting idea! I have a nice Makita orbital sander, maybe I should stick a board on there and give it a try ;-) Actually, if you watch my later videos, you will see I have switched to using a silkscreen technique, which actually is easy enough to do, and gives an excellent result, so at the moment I am not feeling motivated to start a new round of experiments to re-solve an already solved problem. Even so, thanks for the idea, I will definitely keep it in mind. I have seen people spin coating for semiconductor making stuff, so I suspect if I need to get a super thin layer, then spin + vibrate would likely be the way to go!
Hi, can you tell me how far away the UV LEDs should be from the PCB to get the best possible exposure please?
@@TankTurk Mine is set at a height of 30mm, and it seems to work ok with fairly even exposure.. though it is not particularly fast with the green WNB resin still taking about 30mins to fully cure. I think I did some basic tests to determine this height, but it wasn't particularly thorough.. possibly a different height could have been better.. but then there is the matter of heat buildup in a confined space.. Not sure if that helps, but there you go! Thanks for the question 👍.
@@TankTurk I meant 30mm.. sorry about that
@@ForOurGood, thanks for your prompt reply. I ordered the same as yours but the 100W one, it'll be delivered today. I'll start at 30mm and do some tests
@@ForOurGood, Hi, me again. Just thought I'd give an update. I tested it and it seems 30mm is just the right height. It took 10 minutes for the ink to cure fully. I use a brayer to spread the ink, it goes on evenly and very thin. I'm thinking that the ink being so thin it's probably better as it can be burned easier and maybe even with faster speed. I'll try it and see how that works out.
@TankTurk Wow, that's interesting, I had never thought to use a roller to apply the UV resin. You should do a quick video on it and share the process and results. I have found that having good thickness consistency is really important for this process, so as long as you have that it should be good. The thinner the better also is the way to go, but I am sure there is a natural limit to that rule however. Good progress, it will be interesting to see your final results.
I've been searching how to make a PCB using a diode laser for a couple of years now and you solved it with this video. I just did a test of each step in your video and it all worked out perfect. My next project is your UV light box. I have a very old, probably about 30 years old tube UV light box. I might just take the tubes out and fit in one like yours but I think I might go with the 100W version, it's only about £4 (GPB) more so might be worth it. Thank you very much, I am one happy old man. All the best to you, have a great Christmas and a great new year. PS: I did subscribe to your channel a while ago but didn't keep up so missed this episode when you posted it. 👍👍👍👍👍
@@TankTurk Well I am so happy to hear that this video was finally useful to someone in a comprehensive manner.. I had half given up on it. Thanks for taking the time to let me know, and hope you have a wonderful festive season too! BTW: in the end, how did you (re?)discover this video?
@@ForOurGood, I was searching how to make a PCB with a Diode laser. After watching a few, your video popped up. I was a bit reluctant to watch it as it's almost 3 hours long but I am really glad I did. I still need to practice and dial in my laser but last nights tests turned out good so I have high hopes of producing some good looking PCBs, at least a lot better than what I have been producing till now. Thanks again
Just brilliant tutorial... thank u
@@fooballers7883 Happy to hear it was useful for you! And thanks for leaving the comment 🙂
Is it possible with fiber laser? I can clear mask okay. But what about sillkmask?
@@retu191057 Actually, I don't know for sure (since I don't own one), but If the laser wavelength is close enough to what the UV resin requires to cure, and you can throttle the laser power low enough, then I don't see any reason as to why it wouldn't work. Give it a try and let us all know! Thanks for the question.
I have successfully implemented it, but there is a small issue that I haven't been able to resolve yet. When the plus or minus button is pressed, the value increases or decreases by 2 instead of 1, as it should. For example, when the value is at 1 and I press the plus button once, the displayed value jumps to 3, and I notice that the number 2 is briefly shown for a very short moment. Could you explain what is happening and how to fix it? Thank you
As the display is updating twice when the incorrect change happens, the action must be a combination of 2 loops, each time triggering the "PressButton" class "Repeated()" function, causing and add or subtract to happend twice. The problem is likely because of some typo in this function (see @26:54), the button state is either not being set correctly, or being checked correctly, resulting in the double trigger (likely you are not clearing the "WasDown" flag in the first "if" section @27:42). Take a close look at this function and see if you can understand what is going on, and ultimately fix the problem. It could also be useful to check the earlier episode where I talk about this function in more detail (though it is modified a little in this new episode). Good luck!
@ Thank you for your explanation and quick response. I will immediately work on fixing the code and will update you once it functions as expected.
Do you have any plans for a video on the code for Arduino. I have 2 Unimat DB200s, one setup as a lathe and second as a milling machine. I think your program would work great for them.
No, I am sorry, I have no plans at this time to go through this particular project in a video. Even so, many of the lessons are based on code taken from this application.
Hi, thank you for the amazing work you've done here. If it's not too much to ask, can you show the schematic diagram of the circuit? I'm confused with the wiring as some parts of the setup is not shown on the screen. I couldn't, for the life of me, wrap my head around the circuit (probably due to the layout haha). The brown wire from the arduino to the breadboard is connected to the gnd? I assume the brown wires from the buttons (covered by the tape) are also connected to the gnd right? Why're there two grey wires on the side? Also that connection with the black jumper is to close the circuit? haha If I could just see the diagram, I can probably wire the setup in a way I can understand. I'm new to these so pardon my very basic question haha.
After doing some quick searches I found that to use the digital input pull up resistor, you just have to connect the button to a pin and then to the ground, so the grey wires, as well as that black jumper connected to the short blue and red wires are not included in the setup right? The diagram should clear up my misunderstandings haha
@@neutzche @1:37 there is a pretty clear shot of the wiring.. I left some other unrelated junk on this breadboard that might be a bit confusing. But yes, as you have already figured out, each digital input is configured to use the internal pull-up (discussed a@7:20), so the circuit is just 4 switches, switching to ground, each connected to a digital input, and nothing else!.. now I'm pretty sure I don't need to make a diagram for that. Good Luck!
@@ForOurGood Got it! Thanks for the prompt response. I'm currently following through the video and got to the part testing the down button. I probably made a mistake when following along because mine won't work, it's quite a headache to find what I missed haha! Cool stuff tho!
@@neutzche We intend to please! My assumption is that most people will make mistakes.. mistakes and thinking about how things work is a very important part of the learning process. Hope you can figure it out!!!
@@ForOurGood yeah, for some reason, the down button won't detect when I press it haha already checked the pin assignments, they seem to be in order, so it's either there's some improper connection somewhere or I have faulty buttons or board haha I dunno. I tried switching my board but the other one I got shows Access is denied when I tried to upload the code.
I would like to use your code to control how far a stepper motor movers. Specifically, modify test # 2 of the code so than I can adjust it in 0.01 increments rather than whole numbers. From what I have read, I need to use a float rather than an interger. Can you show me how to modify the code, or direct me to some reference material so I can do it. I think these are the correct line numbers for your code. Line 68) void adjustUint8_t(uint8_t *v, uint8_t min, uint8_t max); Line 83) uint8_t Test2_Num = 60; Line 507) if (menuItemPrintable(1, 2)){lcd.print(F("Setting #2 = "));} Line 520) if (menuItemPrintable(14, 2)){printUint32_tAtWidth(settings.Test2_Num, 3, ' ', false);} Line 549) case 2: adjustUint8_t(&settings.Test2_Num, 0, 255); break; Line 635) void adjustUint8_t (uint8_t *v, uint8_t min, uint8_t max){ Line 637) if (btnPlus.RepeatCnt == 0 && btnMinus.Repeated()){if (*v > min){*v = *v - 1; updateItemValue = true;}} Line 639) if (btnMinus.RepeatCnt == 0 && btnPlus.Repeated()){if (*v < max){*v = *v + 1; updateItemValue = true;}} Line 640) } Thanks Pete
As a general rule I don’t give direct feedback or provide viewers with specific code for their projects, because that would become too overwhelming. However, I can provide you with some advice, and hopefully point you in the right direction. The first golden tip I can provide (from suffering a lot of pain myself), is that AVOID USING FLOATS wherever possible, they are totally broken in Arduino and give inconsistent and confusing results. Now with that out of the way, what I recommend you do is work in whole numbers that are a multiple of a fraction, for example the value could represent a quantity of a thousandths. To give yourself an appropriate range, you will want to use a big integer for this, signed or unsigned depending upon your requirement, for example a int64 or a unit64, but it could be smaller variable type too. A int64 has a max value of 9,223,372,036,854,775,807, so even if you used a billionth fraction representation, that still gives you a max whole number value of 9,223,372,036 with huge fractional precision. Where ever possible you will manipulate the value in its native form, but taking into account its fractional nature. Finally, only in cases where it is absolutely necessary to use the value as a float, at that point in the code covert the value back to a float using something like “float(myValue/1000)”. Hope that helps, and thanks for the question!
@@ForOurGood Thanks for the advice. I will see if I can alter it and use to represent 1000ths rather than floats.
@@Pete-pp7kt actually probably needs to be "float(myValue)/1000" at the final use point. My brain was not working..
I was wondering what program you are using to write the code? It appears to be far superior to Arduino IDE. Can you post a link, so I can check it out. Thanks Pete
Please check EP4 where I discuss this in detail.
What an amazing video. This is definately something I can use as a template for future projects. Thanks for taking the time to make it.
You're very welcome!
@ForOurGood Please, like all TH-camrs are doing, create audio and multiple languages for your video. TH-cam has this configuration. I speak Portuguese, I love the subject, but it is not possible to understand English.
@@makeryourself4435 I will check it out! Thanks.
@@makeryourself4435 I did some research on this topic, and it would require me to actually pay someone to translate my videos.. and as my hundreds of hours of work making these lessons is already completely charity, it is impossible for me to spend out of pocket to add extra language tracks.. I am sorry. The good news is you can still use the automatically generated subtitles in your preferred language, and even though it is not great, it is better than nothing. I do have many non-English speaking viewers who have found this series useful, so hopefully that is the same for you. In any case, thank you for bringing it to my attention, at least I am now aware of the capability and how to use it.
Thanks again for the amazing video. I was able to use this to create a menu system to control a stepper motor. I was wondering what would be the best way to modify the code so that it displays on a 20, 4 LCD rather than the serial monitor?
@@Pete-pp7kt Great to hear you could get it to work, well done! Actually, I have a couple of different episodes that cover how to use this menu system with an LCD display. But if you don't want to wade through the various videos, then just skip to episode 7, this has a pretty good overall demonstration on how to do this, along with some nice improvements to the system. Thanks for the question and comment!
@@ForOurGood I have watched part of episode 7, and it seems really interesting. It's definately on my watchlist. I understand the basics of lcd.setCursor, lcd.print, etc.. The problem I'm having is writing the code to scroll through the root menu, and 8 subMenu's on a 20,4 LCD.
@Pete-pp7kt I can assure you that EP7 will have everything you are looking for. Good luck!
@@Pete-pp7kt Hi Pete, I'm actually working on a project involving stepper motors and plan to make a menu system control like you did. Can I ask how you were able to apply a control system with your stepper motor? Is it to set certain parameters like speed, acceleration, rotation, steps? I currently have a stepper motor controlled by an a4988 driver and was wondering how I could implement this menu with controlling the parameters for the stepper motor.
@@neutzche Hi. In EP7, ForOurGood does an exceptional job on showing how to create a menu system where you can adjust the various paramaters. It's hands down the best menu program I have come across and I used it as a template for my menu sustem. Definately worth your time to watch it. I'm still working on my program, such as trying to figure out how to use a push button to run the program. My program starts with an if statement and counter, so the standard "if(digitalRead(buttonPin) == LOW)" does not work as the loop only runs once. Please keep in mind that I can very new to arduino and programing, so my code is very rudimentary at best. There are definately better ways at doing this, I just haven't figured it out yet. Here is a small excerpt. #include <TMC2209.h> // stepper motor driver #include <AccelStepperWithDistance.h> #define DIR_PIN 4 #define STEP_PIN 5 #define EN_PIN 6 #define MS1 9 // for Microstepping #define MS2 10 // for Microstepping AccelStepperWithDistance stepper(AccelStepperWithDistance::DRIVER, STEP_PIN, DIR_PIN); float distance = 1.25; // How far you want the stepper motor to move (i.e. 1.25mm). // Note: For whole numbers I use "int" and for decimal numbers I use "float". void setup() { pinMode (EN_PIN, OUTPUT); digitalWrite (EN_PIN, LOW); //LOW = my motor is powered, HIGH = motor not powered and rotates freely pinMode (MS1, OUTPUT); pinMode (MS2, OUTPUT); digitalWrite (MS1, LOW); digitalWrite (MS2, LOW); // My stepper motor is 200 steps per revolution at 1.8 degrees per step // 1/8 Microstep MS1=Low, MS2=LOW 200 x 8 = 1600 steps //1/16 Microstep MS1=HIGH, MS2=HIGH 200 x 16 = 3200 steps //1/32 Microstep MS1=HIGH, MS2=LOW 200 x 32 = 6400 steps //1/64 Microstep MS1=LOW, MS2=HIGH 200 x 64 = 12800 steps stepper.setSpeed(500); stepper.setMaxSpeed(1000); stepper.setAcceleration(500); stepper.setStepsPerRotation(1600); // For 1/8 microstepping stepper.setDistancePerRotation(1.25); // I used a dial indicator to measure how far my rail moved per revolution } void loop() { stepper.runRelative(distance); stepper.run(); delay(1000); } Hope this helps. Pete
Great video....! May i ask, do you write code on blue pill with VS code ?
This is a pretty old video, so back then Platform IO on VSC was not available. I did try a plugin for VS.net, but it was not so good, so I just stuck to programming in vanilla Arduino IDE.. which was not fun. However, a year or so ago I made the switch to PIO on VSC and never looked back, I even made a video on the topic in my Arduino Tutorial Playlist. I am happy to hear you found the video interesting, and of course thanks for leaving a comment!
Can you please share the code you use in your videos? It's very difficult to write it all from the video!
Sorry mate, not sharing the code, and not simply making it easy as a copy & paste, is my intended method of teaching. Seems a lot of people like it and have had success, but some people don't like it (i.e. this video is not for those people). Ultimately it takes me at least 50 times longer to make these videos compared to the time taken to write the actual code, so I don't think it is such a big ask that people type this in themselves should they be seriously interested in learning how to code. Thanks for the comment!
Thanks for the amazing video. I really appreciated how you explained the reasons for various parts of the code. As someone who is new to Arduino, its great to see the reasons behind the code, rather than just a copy and paste. I can't wait to watch the rest of your videos.
@@Pete-pp7kt I am glad you like the lesson, hopefully you will find some of the later episodes useful too. I had to laugh however, the last comment I got (EP3) was telling me about how the teaching method is not so good, and how to improve it. Of course I always pay attention to any feedback and try to keep it in mind, even if I don't initially agree with it (all feedback is welcome!). But ultimately I think for the most part, it's just impossible to be all things to all people, so of course the way I do the lesson will work for some people, but not for others. Coding can be fun and very rewarding, so I wish you the best with your endeavours to learn. Thanks for the comment!
I watched some of the clips posted by you, but in the end it was difficult for me to get the result you are showing. There are times when the speed of the video prevents the visualization of some lines of code and the explanations are not very detailed either. If you also posted the complete code for each video clip, you would probably get more likes from those who watch them. This suggestion is valid for all the videos posted by you. Otherwise, it's a shame for the work done. It's my opinion, please don't be offended.
@@georgelghita3049 not offended at all, and thanks for the comment and feedback. But be aware it is actually really difficult to make these videos so they work well as a teaching tool, it can actually take 1 to 2 weeks of grinding work just to make one video, and I know they are not perfect nor work for everyone, but in general I get positive feedback, and most people deal the bits that aren't so well explained. I am sure there are many other videos out there too, and some likely a better fit for some people. If you are continuing to watch mine, I can only suggest you pause and review as need be, and keep checking the result you get matches the results I show at every step of the way. (And of course try to understand what is going on, this is a learning by doing approach) As for likes, I am not so worried about such things anymore, it will be what it is I guess, and that's just fine. I will definitely try to improve if I can for future video, but undoubtedly mistakes will always be made..
Hello, i have the next question. Is the new 3018 pro Max for your opinion better? I can many learn from you Videos. May thanks😊
@@hilfsbereit1437 Actually, I like the look of the 3020-PRO MAX V2, the one with the linear rails on the X-axis. But Genmitsu is selling it for $500USD, which is not exactly cheap, but the value is likely there with all the new hardware. Maybe it can be found on sale somewhere at a lower price. I am happy you have found the videos useful, and thanks for the comment!
Great video. What power does the laser have? Which items ( paste ) do you use (green and white)? is green Solder mask? Sorry for my bad englisch ;-))) Thank you
The laser I am using is a LaserTree Gold 450nm 40W-Pro 12V 20mm Fixed Focus Laser, apparently the optical power is in reality less than 10 watts, but still that works fine for me. I do show all the items I use in this video, and also many of my earlier videos too, please check them out for the all details. Thanks for leaving a comment!
This is a useful lesson - is it possible to change the setting values if you only have 4 buttons. If I create a Menü then I have only two or three button. So I use the combinations of pressing two buttons the same time. I like the LCD with 80 chars.
@@viktorhugo8252 In episode 6 of this series, I do demonstrate how you can navigate a settings menu with only 4 buttons. It's using an older version of this code, but you could still implement that concept with this newer code too. Of course 6 buttons will always be easier to code and easier for the user. Thanks for the question!
I'm so glad I found your channel. I'm an Australian living in Tokyo and I have a 3030 desktop CNC and a cheap and weak laser module. I'm currently trying to make PCBs with solder mask at home. I bought a silkscreen frame at Daiso and are about to try it out. Even though I mill the traces with the CNC instead of etching, your videos are so helpful. I would love to hear any more information you have regarding makers in Japan. I've found it's hard to get cheap materials like acrylic or metals for the CNC. Currently I get most of my materials and parts from Aliexpress.
@@blabby102 20 years ago I used to mainly get stuff from Akihabara, but now it's only useful for heatsink, cable ties and cable. Actually, there are a one or two new hobby component stores there now, but it's basically repackaged stuff from China, and since Ali-Express is cheaper, and delivery very fast, that's where I get most of my stuff from now too. RS Components, Mouser and Farnell are all good for getting IC's that are the real deal, but it's never all that cheap, but for some types of chips it's the only way to go (buy Western brand IC's from Ali-Express at your peril... 99% are fake and either barely work or don't work) For raw stock materials, originally I was getting stuff mainly from SuperViva Home, but actually what they have for machining stock is either not so great, or over priced. Tokyo Hands also used to have a good line up for stock, but they're even more expensive. I have also used some online Japanese stores to get aluminium stock in the past, places like Misumi, prices are not bad, but the shipping can be costly, so it's only practical if you need a heap of stuff. For smaller stock or plate materials, Amazon Japan is always a good place to check. Generally I always check Amazon for a wide range of stuff, sometimes it is surprising what they sell, and some good pricing too. However, I got lucky a year or so ago, and stumbled on a physical store that exclusively deals with selling stock materials, thier prices is very reasonable, and they can get almost anything, and as I can pick it up at the store there is no shipping charges, even for small orders. The stores name is ㈱西山商店, typically they only deal as a wholesaler selling to other companies, but even, so they have been very helpful with selling me what I need, and currently is my go to place for raw stock materials. Glad you found the video useful, good luck with your PCB making, and thanks for taking the time to leave a comment!
375 W motor in paper, in reality 200 Chinese Watts. : )
200w sounds about right for the original mini-lathe motor.. pretty gutless. For the new motor it seems I get around 500w peak in practical use, seems the ways/toolpost setup can't cope with much beyond that. Anyway, the mini-lathe has transformed from something that was somewhat annoying to use, to something I am happy to use.
Thanks for making this video.
@@ahmatzainulm3500 You are very welcome. And thanks for watching!
Will need eye protect glasses of uv light
@@المخترععودةالكاطع Yes, you will need!
@@المخترععودةالكاطع sorry, small correction. I thought you were talking about the UV laser where protection glasses are a must. If your UV light has its own UV light shield, then you don't really need glasses. If you have an open UV light, and you use it a lot, then using UV protection glasses would be a good idea. Generally I don't use UV glasses during the UV curing process, as my lights are shielded.
@@ForOurGood Thank for your answer
Can I use connect the button to the digital pin? Will it still be functional?
@@muhammadkhali5 You should be able to use with any digital pin on the Arduino Uno. Just change the defines to point to the digital pin you are using. Thanks for the question!
hi can you help me? i follow your code and if i wanted to make the menu scroll in single/one row what do i change?
@@RNDHVAC what is the size of your display?
@@ForOurGood 20 x4 sir
At 33:56 I define the numbers of rows as "DISP_ITEMS_ROWS = 3", if you change this to be "1" it should scroll in a single row (but I have not tested it). Good luck with your project, and please watch the video carefully and try to understand the best you can, if you can understand it well, then it should be easy enough to modify this code to fit most display style requirements.
@@ForOurGood I've tried that it worked but i also wanted to place my menu in the 4th row i have change things and it keep start in second row how do i change that
@@RNDHVAC Ok, so I understand you have got the single row scrolling menu working on the second row, but you want it on the 4th. The "menuItemPrintable" routine not only returns a positive state if the item is to be printed, but it is also responsible for locating the cursor. So the easiest way to push it down would be to add "+2" to the calculation for the Y-pos in the "lcd.setCursor" routine. Ideally you would be better adding a define for this offset value, and then adding this define value as opposed to hard coding the offset value.
or maybe we could create the solder mask with stove enamel?
@@enkidu9989 think I have seen that before. I think they lay down a tape, laser cut around the pads, remove the unwanted tape, spray the paint and let it dry, and then use something to dissolve the tape... Do a search on TH-cam and you will find it. I think it was something like that.
nice bit of experimenting there. I've just bought a laser and am experimenting masking and etching a circuit board. I have used the laser printed toner transfer with an iron to very good effect and it's pretty quick as well so i might keep using that method for the mask. Although i haven't done it yet when adding the resin for the solder mask i was thinking i could print the solder pads onto the acetate layer before exposing to UV and if alignment can be kept pretty accurate then I can use IPA to wash away the uncured resin leaving the exposed pads. as you are going through that process already, might that be easier?
@@enkidu9989 There are literally endless ways to do this, and I have been told by others that they do the mask just as you mentioned here, so I guess that works too. This is actually an early episode in my PCB series, if you are interested in seeing how the development process progressed, then I suggest you keep watching the series in order. If you just want to see where I am at now, then skip to my most recent episode in the series. The most recent version of my process actually gives some impressive results, especially if you consider where I started with all this. Even so, I still have a few new things I want to try, not sure if it will be better than what I am already doing, but you won't know if you never try! Good luck with your PCB making process, and thanks for watching and leaving a comment!
pls dont stop. we need you. well i need you to suffer so i don't have to. R&D is expensive bro. love oou. you are PCB jesus. like your channel name, you suffer "ForOurGood"
TH-cam is god of killing peoples motivation to actually make videos like this.. take a month to make a video that gets a few hundred views.. you get the idea.. I have always said this is by design, TH-cam does this so people make them free content, then those people disappear, and because there will always be the next sucker ready to waste their time for the unobtainable TH-cam success, TH-cam always wins... Anyway, it is what it is, I am having a small hiatus while a restore a motorcycle, and there is no way I am making a video about that for noone to watch.. but I will likely be back with something later in the year (after I somewhat forget what a total waste of time making these videos are) Thanks for the nice comment however!
@@ForOurGood you know I was searching for a in-depth technical video like your for ever. All the search results are from big time TH-camrs with millions of view that are absolute garbage. Only reason I found you because I set my search filters to long form over 20min vid. Your pcbs, 3d designing and methodology of approach for problem solving is better than I have ever seen and strongly believe should be something that they should teach in school. Also over complicating/ astronomically over engineering very simple things is very close to my heart as that’s my exact approach. (Built a soldering station that can calibrate and save multiple irons with varying characteristics and automagic self calibration. Running on a stm32h7 lol) only ever use one iron. Your pcbs are hand down the best I have ever seen. I am absolutely following on your foot steps. Also just binged the entirety of 60 vids. Hope soon people finds you and your channel blows up. Your video quality is superb. In every aspects.
that green solder mask at the end ? what brand is that? and did it come out that shiny after removing the screen?
@@eross21 The brand of the green UV resin is "WNB". You can find it on Ali-Express. It is shiny after removing the silkscreen, but after UV exposure it goes a little matt. I think it looks pretty good, better than shiny.
Don’t you need to use interrupts?
@@Lew114 Not, not for this method. Generally I try to avoid interrupts, using them only when they are absolutely necessary.
Very much appreciate this video. It cleared up a LOT of my confusion with menus. Well done. Three questions: 1) How would you integrate this menu if there was a home screen on which live sensor data was displayed? E.g., showing present humidity values of a plant, device battery level, etc? In that case, I think a user pressing a button would enter the menu system, and exiting the menu system would default back to the "home screen". 2) How would you integrate user-changeable values within the menus? E.g., user wants to change the refresh rate of the humidity sensor from 5 min to 10 min or the brightness of an OLED. At the very least I know that this would have to be written to eeprom to not be lost on a power-cycle, but the execution of it is a bit fuzzy to me. 3) How would you incorporate a menu system for a screen that could only display a limited number of lines? Say a menu had 6 items, but the user can only see 4 at a time due to OLED limitations?
@@zacharyreed8523 Thanks for watching and thanks for your questions. 1) The great thing about this menu structure is that there really are not any limitations. If you want to start the application at the operating screen, then just set the menu start point to be the operating screen. You can then just have a button to go to the settings list page (for example). Please see EP6 where I do exactly that for a similar application. 2) I have a number of videos showing how to do just this, so please check them ALL out ;-) 3) I demonstrate how to do this in EP4, EP6 & EP7 (in different flavours) If you watch EP11 of my mini-lathe series, you can see where I use this exact menu structure for a complex graphics display. Unfortunately I have not had the time to do a video on graphics displays, but it is much the same as for the LCD displays (once you get it to the stage of printing text to the screen that is).
Great effort @ForOurGood, thank you.
For ESP32 users you need to make some minor changes to get this code to work. Please see my community post about using ESP32 with my latest Menu. This community post should include what you need to get it to work. Actually a number of different Arduino "supported" microcontrollers often need some special code to set up the EEPROM before using, or special calls to commit the changes. Anyway, the internet will provide the answers you need for your specific microcontroller. Even so, the basic logic behind what is taught in this lesson remains valid across the various microcontrollers. Good luck and happy coding!😊
Nice DIY project but when do we get to see it actually doing some soldering?
@@ProactiveExcellence thanks for watching and thanks for the question. Actually it features in a couple of my later videos, check them out if you're interested.
Awesome as always. I'm using ESP32, so wanted to share what additional steps are required if someone is using ESP32. You have to initialize and formally write, which are in addition to the Arduino methods. The ESP32 has flash memory available (check datasheet for how much - mine is 4MB), which "simulates" EEPROM functionality (that's my understanding - don't take me to the bank on that one). Start with initializing the space which will be used with EEPROM built in library that's available (took me forever to realize that I don't have to find the library EEPROM.h, you just add it because it's one of the default ones). Using the awesome STRUCT method from vid, you need to capture the size of it in bytes [example: int EEPROM_SIZE = sizeof(settings)]. At the beginning of the setup (), you need to add [ EEPROM.begin (EEPROM_SIZE)]. Next, in the save routine, after the EEPROM.put (0,settings), you need to add the line [EEPROM.commit();] - nothing is required in the brackets for commit. That's it. Everything else is the same. Final tip - in case not known, and knowing and seeing how good you are at clean, efficient code - I've learned to use the "Serial.printf" command to write lines which include data and line breaks on the same line. This gets rid of the need for multiple Serial.print and Serial.println statements. For example: [Serial.printf ("[Integer Test] %i /n", settings.Integer_test);]. "/n" is carriage return. I use ChatGPT for the details to find out the other % sign add-ons (%i = integer, %f = floating, %f.1 = floating to one decimal place, etc) but you can do multiples on the same line. Example: [Serial.printf ("[Integer Test] %i /n [Byte Test] %i /n " , settings.Integer_Test, settings.Byte_Test);]. Thanks again for the time you take to do these vids.
Thanks for taking time to leave the info for everyone. Actually I made this video before I really started using the ESP32, so I didn't know about the special issues. However on my latest Menu coding video I had a viewer ask me about using it with ESP32, so I tried it, and noticed the special adaptations needed for the EEPROM. I also have a community post about this.. maybe I will add a pinned comment in this video later to point people to that info too.
Oh, and on the Serial.Printf point, yes I am aware of this function, seems like 101 type of an item for anyone learning C properly (admittedly I never learnt C properly). But in Arduinoland, the implementation is patchy, inconsistent, and in some cases takes up too much memory if you include it in the compile options. I did actually mess around with it for a while, but in the end I found it too frustrating to use. My objective is always to try to keep the code clean, but it's also to try and keep the code as easily transportable as possible between different microcontrollers, and by doing so improving reusability. So for now I live a coding life without adequate access to Serial.PrintF.. If I was only using ESP32 however, I likely would be saying something different.
This is by far the best, most well explained tutorial I have found on TH-cam for this topic! Fair dinkum, mate!
@@TeslaFactory Actually it's my most viewed video, so I guess it is a good fit for some people. But taking over 2-years just to get 20K views, plainly indicates that other similar videos must do a far better job for a wider audience. It is what it is! Anyway, I'm always happy to hear that it was useful to someone. So thanks for taking the time to comment!
Great video
@@stephanc7192 Hey thanks! I am glad you found it useful 😃
What are we considering a decent power laser? I have a 3w 405nm laser that I can use to engrave things I suspect that is enough?
@@Segphalt if that's a real 3W optical power laser, it should be enough to remove the resin. Maybe a little weak to cut the board, but you could do that a different way.