Სარჩევი:
- მარაგები
- ნაბიჯი 1: როგორ მუშაობს ციფრული საათი
- ნაბიჯი 2: სახელმწიფო მანქანა
- ნაბიჯი 3: LCD კლავიატურის ფარი
- ნაბიჯი 4: სახელმწიფო აპარატთან დაკავშირება
- ნაბიჯი 5: ნივთების გაყვანილობა ერთად
- ნაბიჯი 6: მიიღეთ მაგალითი
ვიდეო: ციფრული საათი Arduino– ზე სასრული მდგომარეობის აპარატის გამოყენებით: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:17
გამარჯობა, მე ვაჩვენებ, თუ როგორ შეიძლება ციფრული საათის შექმნა YAKINDU Statechart Tools– ით და გაშვება Arduino– ზე, რომელიც იყენებს LCD კლავიატურის ფარს.
ციფრული საათის ორიგინალური მოდელი აღებულია დევიდ ჰარელისგან. მან გამოაქვეყნა ნაშრომი თემაზე
"[…] სახელმწიფო მანქანებისა და სახელმწიფო დიაგრამების ჩვეულებრივი ფორმალიზმის ფართო გაფართოება."
ამ ნაშრომში მან გამოიყენა ციფრული საათის მაგალითი თავისი კვლევისთვის. მე გამოვიყენე ის როგორც შთაგონება და გადავაკეთე საათი YAKINDU Statechart Tools– ით (სახელმწიფო მანქანების გრაფიკული მოდელების შესაქმნელად და მასთან ერთად C/C ++ კოდის შესაქმნელად) და დავუბრუნე მას Arduino– ზე.
მარაგები
აპარატურა:
- არდუინო უნო ან მეგა
- LCD კლავიატურის ფარი
პროგრამული უზრუნველყოფა:
- YAKINDU Statechart ინსტრუმენტები
- Eclipse C ++ IDE არდუინოსთვის
ნაბიჯი 1: როგორ მუშაობს ციფრული საათი
დავიწყოთ იმის განსაზღვრით, თუ როგორ უნდა იმუშაოს ციფრული საათი. გახსოვთ ეს… ვთქვათ…”ულტრა მაგარი” ციფრული საათები, რომლებიც ყველას ჰქონდა 90 -იან წლებში? ინტეგრირებული წამზომი, სხვადასხვა სიგნალიზაცია და მისი შემაშფოთებელი სიგნალი ყოველ სრულ საათში. თუ არა, გადახედეთ: 90 -იანი წლების ციფრული საათი.
ძირითადად ეს არის კონფიგურირებადი საათი სხვადასხვა რეჟიმებით. ძირითადად, ნაჩვენები იქნება მიმდინარე დრო, მაგრამ არის სხვა მახასიათებლები. როგორც შეყვანის, თქვენ გაქვთ ჩართვა/გამორთვა, რეჟიმი და მითითებული ღილაკი. გარდა ამისა, თქვენ შეგიძლიათ ჩართოთ და გამორთოთ შუქი. რეჟიმის ღილაკით შეგიძლიათ განასხვავოთ რეჟიმები და გააქტიუროთ/გამორთოთ საათის ფუნქციები:
- დროის ჩვენება (საათი)
- თარიღის ჩვენება (თარიღი)
- დააყენეთ მაღვიძარა (მაღვიძარა 1, მაღვიძარა 2)
- ზარის ჩართვა/გამორთვა (ზარის დაყენება)
- გამოიყენეთ წამზომი (Stop Watch)
მენიუებში შეგიძლიათ გამოიყენოთ ჩართვის/გამორთვის ღილაკი რეჟიმის კონფიგურაციისთვის. მითითებული ღილაკი საშუალებას გაძლევთ განსაზღვროთ დრო - მაგ. საათის ან სიგნალიზაციისთვის. წამზომი შეიძლება კონტროლდებოდეს - დაიწყო და გაჩერდეს - შუქის ჩართვისა და გამორთვის ღილაკის გამოყენებით. თქვენ ასევე შეგიძლიათ გამოიყენოთ ინტეგრირებული წრე მრიცხველი
გარდა ამისა, არის ზარი, რომელიც რეკავს ყოველ საათში და კონტროლირებადი შუქნიშანი ინტეგრირებულია. პირველ ნაბიჯზე, მე მათ არდუინოზე არ მივუყვანივარ.
ნაბიჯი 2: სახელმწიფო მანქანა
არ მინდა ამ მაგალითის ახსნაზე უფრო დეტალურად. ეს არ არის იმიტომ, რომ ის ძალიან რთულია, ის უბრალოდ ძალიან დიდია. შევეცდები ავხსნა ძირითადი იდეა, თუ როგორ მუშაობს იგი. შესრულება უნდა იყოს თავისთავად ახსნილი, მოდელის გადახედვით ან გადმოტვირთვით და სიმულაციით. სახელმწიფო აპარატის ზოგიერთი ნაწილი შეჯამებულია ქვე რეგიონებში, ისევე როგორც დადგენილი დროის რეგიონი. ამასთან, უზრუნველყოფილი უნდა იყოს სახელმწიფო მანქანის წაკითხვადობა.
მოდელი იყოფა ორ ნაწილად - გრაფიკული და ტექსტური. ტექსტურ ნაწილში განისაზღვრება მოვლენები, ცვლადები და ა.შ. გრაფიკულ ნაწილში - მდგომარეობის დიაგრამა - მითითებულია მოდელის ლოგიკური შესრულება. სახელმწიფო მანქანის შესაქმნელად, რომელიც ასრულებს მითითებულ ქცევას, საჭიროა შეყვანის ზოგიერთი მოვლენა, რომელიც შეიძლება გამოყენებულ იქნას მოდელში: გამორთვა, დაყენება, რეჟიმი, შუქი და light_r. განსაზღვრების განყოფილებაში გამოიყენება შიდა მოვლენა, რომელიც ზრდის დროის მნიშვნელობას ყოველ 100 ms:
ყოველ 100 ms / დროს += 1
100 ms ნაბიჯების საფუძველზე მიმდინარე დრო გამოითვლება HH: MM: SS ფორმატში:
ჩვენება.პირველი = (დრო / 36000) % 24;
ჩვენება.მეორე = (დრო / 600) % 60; ჩვენება. მესამე = (დრო / 10) % 60;
მნიშვნელობები შეუერთდება LCD ეკრანს ოპერაციის განახლების LCD გამოყენებით ყოველ ჯერზე, როდესაც სახელმწიფო მანქანას დაურეკავს:
display.updateLCD (ჩვენება.პირველი, ჩვენება.მეორე, ჩვენება.მესამე, ჩვენება.ტექსტი)
სახელმწიფო აპარატის ძირითადი შესრულება უკვე განსაზღვრულია განყოფილებაში როგორ მუშაობს ციფრული საათი. ინსტრუმენტის ფარგლებში მე გამოვიყენე "სპეციალური" მოდელირების ელემენტები, როგორიცაა CompositeState, History, Sub-Diagrams, ExitNodes და სხვა. დეტალური აღწერა შეგიძლიათ იხილოთ მომხმარებლის სახელმძღვანელოში.
ნაბიჯი 3: LCD კლავიატურის ფარი
LCD კლავიატურის ფარი საკმაოდ მაგარია მარტივი პროექტებისთვის, რომლებიც საჭიროებენ ეკრანს ვიზუალიზაციისთვის და რამდენიმე ღილაკს შეყვანისთვის - ტიპიური, მარტივი HMI (ადამიანის აპარატის ინტერფეისი). LCD კლავიატურის ფარი შეიცავს ხუთ მომხმარებლის ღილაკს და კიდევ ერთს გადატვირთვისთვის. ხუთი ღილაკი ყველა ერთად არის დაკავშირებული Arduino– ს A0 პინთან. თითოეული მათგანი დაკავშირებულია ძაბვის გამყოფთან, რაც საშუალებას იძლევა განასხვავოს ღილაკებს შორის.
თქვენ შეგიძლიათ გამოიყენოთ analogRead (0) კონკრეტული მნიშვნელობების მოსაძებნად, რაც, რა თქმა უნდა, შეიძლება განსხვავდებოდეს მწარმოებლის მიერ. ეს მარტივი პროექტი აჩვენებს მიმდინარე მნიშვნელობას LCD– ზე:
#მოიცავს "Arduino.h"
#მოიცავს "LiquidCrystal.h" LiquidCrystal LCD (8, 9, 4, 5, 6, 7); void setup () {lcd.begin (16, 2); lcd.setCursor (0, 0); lcd.write ("გაზომილი ღირებულება"); } void loop () {lcd.setCursor (0, 1); lcd.print (""); lcd.setCursor (0, 1); lcd.print (analogRead (0)); დაგვიანება (200); }
ეს არის ჩემი გაზომილი შედეგები:
- არცერთი: 1023
- აირჩიეთ: 640
- მარცხნივ: 411
- ქვემოთ: 257
- ზევით: 100
- მარჯვნივ: 0
ამ ზღურბლებით შესაძლებელია ღილაკების წაკითხვა:
#განსაზღვრეთ NONE 0 #განსაზღვრეთ SELECT 1 #განსაზღვრეთ მარცხნივ 2 #განსაზღვრეთ ქვემოთ 3 #განსაზღვრეთ UP 4 #განსაზღვრეთ RIGHT 5 სტატიკური int readButton () {int შედეგი = 0; შედეგი = analogRead (0); თუ (შედეგი <50) {დაბრუნება მარჯვნივ; } if (შედეგი <150) {დაბრუნება ზემოთ; } if (შედეგი <300) {დაბრუნება ქვემოთ; } if (შედეგი <550) {დაბრუნება მარცხნივ; } if (შედეგი <850) {return SELECT; } დაბრუნება არავის; }
ნაბიჯი 4: სახელმწიფო აპარატთან დაკავშირება
სახელმწიფო მანქანის გენერირებული C ++ კოდი უზრუნველყოფს ინტერფეისებს, რომლებიც უნდა განხორციელდეს სახელმწიფო აპარატის გასაკონტროლებლად. პირველი ნაბიჯი არის მოვლენების დაკავშირება კლავიატურის ფარის გასაღებებთან. მე უკვე ვაჩვენე, თუ როგორ უნდა წავიკითხო ღილაკები, მაგრამ მათ სახელმწიფო აპარატთან დასაკავშირებლად საჭიროა ღილაკების დემონსტრირება - წინააღმდეგ შემთხვევაში, მოვლენები რამდენჯერმე გახმაურდება, რაც იწვევს არაპროგნოზირებად ქცევას. პროგრამული უზრუნველყოფის დემონსტრირების კონცეფცია არ არის ახალი. შეგიძლიათ გადახედოთ Arduino– ს დოკუმენტაციას.
ჩემი განხორციელებისას, მე აღმოვაჩინე დაცემის ზღვარი (ღილაკის გაშვება). ვკითხულობ ღილაკის მნიშვნელობას, ველოდები 80 ms (მივიღე უკეთესი შედეგები 80 – ის ნაცვლად 50 – ით), შევინახე შედეგი და წავიკითხე ახალი მნიშვნელობა. თუ ძველი შედეგი არ იყო არცერთი (არაპრესირებული) და ახალი შედეგი არავინაა, მე ვიცი, რომ ღილაკი დაჭერილი იყო ადრე და ახლა გამოვიდა. შემდეგ, მე ვაყენებ სახელმწიფო აპარატის შეყვანის მოვლენას.
int oldState = არა; სტატიკური სიცარიელე raiseEvents () {int buttonPressed = readButton (); დაგვიანება (80); oldState = buttonPressed; if (oldState! = NONE && readButton () == NONE) {switch (oldState) {case SELECT: {stateMachine-> getSCI_Button ()-> raise_mode (); შესვენება; } შემთხვევა მარცხნივ: {stateMachine-> getSCI_Button ()-> raise_set (); შესვენება; } საქმე ქვემოთ: {stateMachine-> getSCI_Button ()-> raise_light (); შესვენება; } საქმე UP: {stateMachine-> getSCI_Button ()-> raise_light_r (); შესვენება; } case RIGHT: {stateMachine-> getSCI_Button ()-> raise_onoff (); შესვენება; } ნაგულისხმევი: {შესვენება; }}}}
ნაბიჯი 5: ნივთების გაყვანილობა ერთად
ძირითადი პროგრამა იყენებს სამ ნაწილს:
- სახელმწიფო მანქანა
- ტაიმერი
- ჩვენების დამმუშავებელი (ტიპიური lcd.print (…))
DigitalWatch* stateMachine = ახალი DigitalWatch (); CPPTimerInterface* timer_sct = ახალი CPPTimerInterface (); DisplayHandler* displayHandler = ახალი DisplayHandler ();
სახელმწიფო მანქანა იყენებს ჩვენების დამმუშავებელს და მიიღო ტაიმერი, რომელიც განახლდება დროული მოვლენების გასაკონტროლებლად. ამის შემდეგ, სახელმწიფო მანქანა ინიციალიზდება და შედის.
void setup () {stateMachine-> setSCI_Display_OCB (displayHandler); stateMachine-> setTimer (timer_sct); stateMachine-> init (); stateMachine-> enter (); }მარყუჟი სამ რამეს აკეთებს:
- გაზარდეთ შეყვანის მოვლენები
- გამოთვალეთ გასული დრო და განაახლეთ ტაიმერი
- დარეკეთ სახელმწიფო აპარატში
ხანგრძლივი მიმდინარე_დრო = 0; გრძელი ბოლო_ციკლი_დრო = 0; void loop () {raiseEvents (); last_cycle_time = მიმდინარე_ დრო; მიმდინარე_დრო = მილი (); timer_sct-> updateActiveTimer (stateMachine, current_time - last_cycle_time); stateMachine-> runCycle (); }
ნაბიჯი 6: მიიღეთ მაგალითი
Ის არის. ალბათ, მე არ ვახსენე განხორციელების ყველა დეტალი, მაგრამ თქვენ შეგიძლიათ გადახედოთ მაგალითს ან დატოვოთ კომენტარი.
დაამატეთ მაგალითი გაშვებულ IDE– სთან ერთად: ფაილი -> ახალი -> მაგალითი -> YAKINDU Statechart მაგალითები -> შემდეგი -> Arduino -ციფრული საათი (C ++)
> IDE შეგიძლიათ ჩამოტვირთოთ აქ <<
თქვენ შეგიძლიათ დაიწყოთ 30 დღიანი საცდელი პერიოდით. ამის შემდეგ, თქვენ უნდა მიიღოთ ლიცენზია, რომელიც უფასოა არაკომერციული გამოყენებისთვის!
გირჩევთ:
როგორ გააკეთოთ ანალოგური საათი და ციფრული საათი Led Strip– ით Arduino– ს გამოყენებით: 3 ნაბიჯი
როგორ გავაკეთოთ ანალოგური საათი და ციფრული საათი Led Strip– ით Arduino– ს გამოყენებით: დღეს ჩვენ გავაკეთებთ ანალოგიურ საათს & ციფრული საათი Led Strip– ით და MAX7219 Dot მოდულით Arduino– ით. ის შეასწორებს დროს ადგილობრივ დროის ზონაში. ანალოგურ საათს შეუძლია გამოიყენოს უფრო გრძელი LED ზოლები, ასე რომ ის შეიძლება კედელზე ჩამოკიდდეს და გახდეს ხელოვნება
Arduino ციფრული საათი DS1302 გამოყენებით: 4 ნაბიჯი
Arduino ციფრული საათი DS1302– ის გამოყენებით: შესავალი გამარჯობა ბიჭებო, ვიმედოვნებ, რომ თქვენ ყველანი მშვენივრად იქნებით. ეს იქნება მოკლე და მარტივი პროექტი იმის შესახებ, თუ როგორ უნდა გავაკეთოთ ციფრული საათი Arduino– ს გამოყენებით. ამ პროექტში ჩვენ შევქმნით ციფრულ საათს Arduino– ს და ცვლის რეგისტრაციის დახმარებით. ეს
სასრული მდგომარეობის მანქანა MSP430– ზე: 6 ნაბიჯი
სასრული სახელმწიფო მანქანა MSP430– ზე: მე გაჩვენებთ, თუ როგორ უნდა პროგრამიროთ MSP430G2 Launchpad სასრული სახელმწიფო მანქანებით (FSM) YAKINDU Statechart Tools– ის გამოყენებით უშუალოდ Texas Instruments Code Composer Studio– ში. ეს გაკვეთილი შეიცავს ექვს ნაბიჯს: YAKINDU Statechart Tools– ის დაყენება როგორც
ციფრული საათი Arduino და Led Dot Matrix ჩვენების გამოყენებით: 6 ნაბიჯი
ციფრული საათი Arduino და Led Dot Matrix ჩვენების გამოყენებით: დღესდღეობით, შემქმნელები, დეველოპერები ამჯობინებენ Arduino– ს პროექტების პროტოტიპების სწრაფი განვითარებისათვის. Arduino არის ღია კოდის ელექტრონიკის პლატფორმა, რომელიც დაფუძნებულია ადვილად გამოსაყენებელ აპარატურასა და პროგრამულ უზრუნველყოფაზე. Arduino– ს აქვს ძალიან კარგი მომხმარებლის საზოგადოება. ამ პროექტში
ციფრული მანომეტრი/CPAP აპარატის მონიტორი: 6 ნაბიჯი (სურათებით)
ციფრული მანომეტრი/CPAP აპარატის მონიტორი: ოდესმე გაიღვიძეთ დილით და აღმოაჩინეთ, რომ თქვენი CPAP ნიღაბი გამორთულია? ეს მოწყობილობა გაგაფრთხილებს, თუ თქვენ გაქვთ უნებლიედ ამოღებული ნიღაბი ძილის დროს. CPAP (უწყვეტი პოზიტიური ჰაერის წნევა) თერაპია არის ობსტრუქციული ძილის მკურნალობის ყველაზე გავრცელებული ფორმა