Სარჩევი:

STONE LCD ჭკვიანი სახლით: 5 ნაბიჯი
STONE LCD ჭკვიანი სახლით: 5 ნაბიჯი

ვიდეო: STONE LCD ჭკვიანი სახლით: 5 ნაბიჯი

ვიდეო: STONE LCD ჭკვიანი სახლით: 5 ნაბიჯი
ვიდეო: ქარავნის ტესტი -25°-ზე. ღამისთევა ზამთარში. როგორ არ გავიყინოთ? 2024, ივლისი
Anonim
STONE LCD ჭკვიანი სახლით
STONE LCD ჭკვიანი სახლით

დღეს მე მივიღე STONE– ის სერიული პორტის დისკის ჩვენება, რომელსაც შეუძლია MCU– ს სერიული პორტის საშუალებით კომუნიკაცია და ამ დისპლეის UI ლოგიკური დიზაინი შეიძლება იყოს უშუალოდ STONE– ის ოფიციალურ ვებგვერდზე მოწოდებული VGUS პროგრამული უზრუნველყოფის გამოყენებით, რაც ჩვენთვის ძალიან მოსახერხებელია. ამიტომ ვგეგმავ მის გამოყენებას მარტივი მოწყობილობის კონტროლერის გასაკეთებლად, რომელიც მოიცავს სხვადასხვა განათების კონტროლს (მისაღები, სამზარეულო, საბავშვო ოთახი, აბაზანა). ამავე დროს, შესაძლებელია შიდა და გარე ტემპერატურის, ტენიანობის და ჰაერის ხარისხის შეგროვება. ეს არის უბრალო დემო და თქვენ შეგიძლიათ განახორციელოთ მეორადი განვითარება ჩემ მიერ მოწოდებული კოდის საშუალებით. STONE ეკრანის შესახებ ზოგიერთი ძირითადი გაკვეთილი შეგიძლიათ იხილოთ ვებგვერდზე:

ვებსაიტს აქვს მრავალფეროვანი ინფორმაცია მოდელის, მომხმარებლის და დიზაინის დოკუმენტაციის შესახებ, ასევე ვიდეო გაკვეთილები. მე არ შევალ აქ ძალიან დეტალურად.

ნაბიჯი 1: ინტერფეისის ინტერფეისის დიზაინი

ინტერფეისის ინტერფეისის დიზაინი
ინტერფეისის ინტერფეისის დიზაინი
ინტერფეისის ინტერფეისის დიზაინი
ინტერფეისის ინტერფეისის დიზაინი
ინტერფეისის ინტერფეისის დიზაინი
ინტერფეისის ინტერფეისის დიზაინი
ინტერფეისის ინტერფეისის დიზაინი
ინტერფეისის ინტერფეისის დიზაინი

ფოტოშოპი

მე დავამუშავე შემდეგი ორი ინტერფეისის გვერდი Photoshop– ით:

ამ პროექტს აქვს სულ ზემოთ ორი გვერდი. "სინათლე" და "სენსორი" ზედა მარჯვენა კუთხეში არის ამ ორი გვერდის გადამრთველი ღილაკები.

"სინათლის" გვერდზე თქვენ შეგიძლიათ აკონტროლოთ ყველა სახის შუქი თქვენს სახლში. "სენსორის" გვერდზე შეგიძლიათ შეამოწმოთ სხვადასხვა სენსორების მიერ გამოვლენილი მნიშვნელობები.

ზემოაღნიშნული ორი გვერდის შემუშავების შემდეგ, ჩვენ შეგვიძლია განვახორციელოთ ღილაკების ლოგიკური დიზაინი STONE TOOL პროგრამული უზრუნველყოფის საშუალებით, რომელიც მოცემულია STONE- ის ოფიციალურ ვებგვერდზე.

აღსანიშნავია, რომ აქ დროის ჩვენებისათვის გამოყენებული საათის წყარო არის ეკრანის საათის წყარო და არა MCU საათის წყარო.

TAB გვერდის გადართვის ეფექტი

STONE TOOL პროგრამულ უზრუნველყოფაში TAB გვერდის გადართვის კომპონენტი არ იქნა ნაპოვნი, ამიტომ მოვიფიქრე სხვა მეთოდი TAB გვერდის გადართვის ეფექტის მისაღწევად.

დაკვირვების საშუალებით მე ვაძლევ ორ ინტერფეისის სურათს, რომ ორი გამოსახულება არის "სინათლის" და "სენსორის" ტექსტი, განსხვავება იმაში მდგომარეობს, რომ მათი პიქსელების ზომა განსხვავებულია, ამიტომ ჩვენ მხოლოდ ორ პიქსელის პოზიციის დაყენება გვჭირდება იგივე ტექსტი, შემდეგ კი მითითებისათვის დროის და თარიღის ზედა მარცხენა კუთხეში შეგიძლიათ მიაღწიოთ TAB ეფექტს.

ღილაკის ლოგიკა

მიიღეთ მაგალითი "მისაღები ოთახი". როდესაც მომხმარებელი დააჭერს ამ ღილაკს, STONE სერიული პორტის ჩვენების ეკრანი გამოგიგზავნით შესაბამის პროტოკოლის მითითებებს სერიული პორტის საშუალებით. ამ ინსტრუქციის მიღების შემდეგ, მომხმარებლის MCU გააანალიზებს პროტოკოლს, რომელიც გააკონტროლებს MCU– სთან დაკავშირებული განათების გადართვის მდგომარეობას.

სენსორის შეძენა

ავიღოთ მაგალითად "ჰაერის ხარისხი": თუ გსურთ მიიღოთ შიდა ჰაერის ხარისხი, ჩვენ უნდა გვქონდეს MCU ჰაერის ხარისხის შესაგროვებლად, ჰაერის ხარისხის სენსორი, როდესაც MCU რიცხვითი რიცხვი აგროვებს ალგორითმს ჰაერის ხარისხის დადებითი და უარყოფითი მხარეების შედარებისას. MCU იგზავნება სერიული პორტის საშუალებით, რომ აჩვენოს "კარგი" ან "ცუდი" შენახვის ადგილი, შეცვალოს "ტექსტი ცვლადი 0" ჩვენების შინაარსი და შემდეგ მომხმარებელს შეუძლია ინტუიციურად დაინახოს ხარისხის კონტროლის უპირატესობა. ეს მოგვიანებით განმარტებულია MCU კოდით.

ნაბიჯი 2: MCU კომუნიკაცია

MCU კომუნიკაცია
MCU კომუნიკაცია
MCU კომუნიკაცია
MCU კომუნიკაცია
MCU კომუნიკაცია
MCU კომუნიკაცია
MCU კომუნიკაცია
MCU კომუნიკაცია

STM32 არის MCU, რომელსაც ყველა იცნობს და ეს არის საერთო MCU მოდელი საერთაშორისო დონეზე. ამრიგად, ამ პროექტში გამოყენებული STM32 MCU– ს კონკრეტული მოდელი არის STM32F103RCT6.

არსებობს მრავალი სერია STM32, რომელსაც შეუძლია დააკმაყოფილოს ბაზრის სხვადასხვა მოთხოვნები. ბირთვი შეიძლება დაიყოს ქერქის- m0, M3, M4 და M7 და თითოეული ბირთვი შეიძლება დაიყოს მთავარ, მაღალი ხარისხის და დაბალი ენერგიის მოხმარებად.

სწავლის თვალსაზრისით, თქვენ შეგიძლიათ აირჩიოთ F1 და F4, F1 წარმოადგენს ძირითად ტიპს, ქერქის- m3 ბირთვის საფუძველზე, ძირითადი სიხშირეა 72MHZ, F4 წარმოადგენს მაღალ წარმადობას, დაფუძნებულია ქერქის- m4 ბირთვზე, მთავარი სიხშირე 180 მ.

რაც შეეხება F1, F4 (429 სერია და ზემოთ), გარდა სხვადასხვა ბირთვისა და ძირითადი სიხშირის გაუმჯობესებისა, განახლების აშკარა მახასიათებელია LCD კონტროლერი და კამერის ინტერფეისი, SDRAM- ის მხარდაჭერა, ამ განსხვავებას პრიორიტეტი მიენიჭება პროექტის შერჩევაში. თუმცა, უნივერსიტეტის სწავლებისა და მომხმარებლების საწყისი სწავლის თვალსაზრისით, F1 სერია მაინც პირველი არჩევანია. ამჟამად, F1 სერიის STM32– ს აქვს ყველაზე დიდი მასალა და პროდუქტი ბაზარზე.

STM32 SCM განვითარების გარემოს ინსტალაციისა და პროგრამის ჩამოტვირთვის მეთოდის შესახებ, მე არ გავაკეთებ შესავალს.

GPIO ინიციალიზაცია

ამ პროექტში ჩვენ გამოვიყენეთ სულ 4 GPIO, რომელთაგან ერთი არის PWM გამომავალი პინი. მოდით შევხედოთ სამი ჩვეულებრივი GPIO პორტის ინიციალიზაციას:

ეს ფუნქცია ახდენს PB0 / PB1 / PB2 STM32F103C8– ის ინიციალიზაციას, როგორც გამომავალი პინი და უწოდებს მას ძირითადი ფუნქციიდან. ინიციალიზაციის შემდეგ, ჩვენ უნდა გვქონდეს ლოგიკა, რომ გავაკონტროლოთ ამ GPIO- ს გამომავალი მდგომარეობა, მაღალი და დაბალი დონე, ამიტომ მე დავწერე ფუნქცია ქვემოთ:

ეს არის ფუნქცია, რომლის გაგებაც შეგიძლიათ ინტუიციურად ცვლადის სახელის მიხედვით.

სერიული პორტის ინიციალიზაცია

სერიული პორტის საწყისი ნაწილი არის uart.c:

შემდეგ დარეკეთ uart_init მთავარ ფუნქციაში, რათა დაიწყოთ 115200 სერიული პორტის სიჩქარე. ქინძისთავები იყენებენ PA9/PA10

PWM ინიციალიზაცია

კონკრეტული ნაბიჯები:

1. დააყენეთ RCC საათი;

2. დააყენეთ GPIO საათი; GPIO რეჟიმი უნდა იყოს მითითებული GPIO_Model_AF_PP, ან GPIO_PinRemapConfig () ფუნქციაზე, თუ საჭიროა პინის გადაღება.

3. დააყენეთ TIMx ტაიმერის შესაბამისი რეგისტრები;

4. დააყენეთ TIMx ტაიმერის PWM დაკავშირებული რეესტრი;

ა. დააყენეთ PWM რეჟიმი

ბ. სამოქმედო ციკლის დადგენა (ფორმულის გაანგარიშება)

C. დააყენეთ გამომავალი შედარების პოლარობა (ადრე შემოღებული)

D. რაც მთავარია, ჩართეთ TIMx გამომავალი მდგომარეობა და ჩართეთ TIMx PWM გამომავალი; შესაბამისი პარამეტრების დასრულების შემდეგ, TIMx ტაიმერი ჩართულია TIMx_Cmd () - ით PWM გამომუშავების მისაღებად. დარეკეთ TIM3_PWM_Init ძირითადი ფუნქციიდან.

ნაბიჯი 3: ლოგიკური კოდის წერა

ლოგიკური კოდის წერა
ლოგიკური კოდის წერა
ლოგიკური კოდის წერა
ლოგიკური კოდის წერა
ლოგიკური კოდის წერა
ლოგიკური კოდის წერა

კომპონენტის მისამართის განსაზღვრის ჩვენება

ეკრანის კომპონენტებს აქვთ ცალკეული მისამართები და აქ მე დავწერე ყველა მაკრო განსაზღვრების სახით: სერიული მონაცემების მიღება

STONE ეკრანის შესახებ ინფორმაციის დათვალიერებისას თქვენ ხედავთ, რომ ღილაკზე დაჭერისას ეკრანზე სერიული პორტი აგზავნის პროტოკოლებს შესაბამისი ფორმატით, რომლის მიღება და გაანალიზება შეუძლია MCU მომხმარებელს. ღილაკზე დაჭერისას ეკრანზე სერიული პორტი აგზავნის ცხრა ბაიტ მონაცემს, მომხმარებლის მონაცემების ჩათვლით. სერიული მონაცემების მიღება იწერება Handler– ში: მიღებული მონაცემები ინახება "USART_RX_BUF" მასივში. ამ პროექტში მიმღების სიგრძე ფიქსირდება. როდესაც მიმღების სიგრძე 9 ბაიტზე მეტია, მიღების დასასრული განიხილება.

აკონტროლეთ ნათურის გადართვის მდგომარეობა

მთავარ ფუნქციაში, მე დავწერე ლოგიკური კოდი ნათურის გადართვის მდგომარეობის გასაკონტროლებლად: როგორც ვხედავთ, კოდი პირველ რიგში განსაზღვრავს თუ არა სერიული პორტის მონაცემების მიღებას და როდესაც სერიული პორტის მონაცემები მიიღება, განსაზღვრავს რომელი ღილაკია მომხმარებელს დააჭირეთ ეკრანის ეკრანზე. ეკრანის სხვადასხვა ღილაკებს აქვთ განსხვავებული მისამართები, რომელთა ნახვა შეგიძლიათ STONE TOOL პროგრამულ უზრუნველყოფაში: როდესაც მომხმარებელი დააჭერს ღილაკს "მისაღები ოთახი", ჩვენების მეოთხე და მეხუთე ბიტი გამოგზავნილია ეკრანის სერიული პორტით. ღილაკის მისამართი. ვინაიდან აქ დაყენებული ყველა ღილაკის მეოთხე ბიტი არის 0x00, ჩვენ შეგვიძლია ვიმსჯელოთ რომელ ღილაკზე აჭერს მომხმარებელი მეხუთე ბიტის მონაცემების პირდაპირ განსჯით. მომხმარებლის მიერ დაჭერილი ღილაკის მოპოვების შემდეგ, ჩვენ უნდა ვიმსჯელოთ ღილაკის დაჭერისას მიღებული მომხმარებლის მონაცემებზე, რაც არის ეკრანის ეკრანიდან გამოგზავნილი მონაცემების მერვე ციფრი. ამრიგად, ჩვენ ვაკეთებთ შემდეგ კონტროლს: ჩაწერეთ ღილაკის მისამართის პარამეტრი და მომხმარებლის მონაცემები "Light_Contral" ფუნქციაში, რათა გააკონტროლოთ შუქის ჩართვა-გამორთვის მდგომარეობა. Light_Contral ფუნქციის ერთეული ასეთია: როგორც ხედავთ, თუ ღილაკის მისამართია „მისაღები“და მომხმარებლის მონაცემები არის „LightOn“, მაშინ MCU– ს PB0 პინი დაყენებულია მაღალი დონის გამომავალზე და შუქი ჩართულია რა დანარჩენი სამი ღილაკი მსგავსია, მაგრამ აქ არ გავაგრძელებ.

PWM გამომავალი

ჩემს მიერ შემუშავებულ UI– ში არის მოცურების მარეგულირებელი, რომელიც გამოიყენება „ბავშვთა ოთახის“სინათლის სიკაშკაშის გასაკონტროლებლად. MCU ხორციელდება PWM– ის მიერ. PWM გამომავალი პინი არის PB5. კოდი ასეთია: მოცურების მარეგულირებელი არის მინიმალური მნიშვნელობით 0x00 და მაქსიმალური მნიშვნელობა 0x64. მოცურებისას ეკრანის სერიული პორტი ასევე გამოგიგზავნით შესაბამის მისამართებსა და მონაცემებს და შემდეგ დააყენებს PWM გამომავალი მოვალეობის თანაფარდობას შემდეგი ფუნქციის გამოძახებით:

ნაბიჯი 4: სენსორის შეძენა

სენსორის შეძენა
სენსორის შეძენა
სენსორის შეძენა
სენსორის შეძენა
სენსორის შეძენა
სენსორის შეძენა

ეკრანის "სენსორის" გვერდზე არის ოთხი სენსორის მონაცემი.

მონაცემებს ასევე აქვთ შენახვის მისამართი ეკრანზე და ჩვენ შეგვიძლია შევცვალოთ რეალური შინაარსი ამ მისამართებზე მონაცემების უბრალოდ ჩაწერით MCU– ს სერიული პორტის საშუალებით.

აქ გავაკეთე მარტივი კოდის განხორციელება:

ჩვენების მონაცემები განახლდება ყოველ 5 წამში და მე დავწერე მხოლოდ სენსორების შეგროვების ფუნქციის მარტივი დემო, რადგან ეს სენსორები არ მაქვს ხელში.

რეალური პროექტის შემუშავებისას, ეს სენსორები შეიძლება იყოს მონაცემები ADC– ს მიერ შეგროვებული, ან IIC, UART და SPI საკომუნიკაციო ინტერფეისების მიერ შეგროვებული მონაცემები. ყველაფერი რაც თქვენ გჭირდებათ არის ჩაწეროთ ეს მონაცემები შესაბამის ფუნქციაში, როგორც დასაბრუნებელი მნიშვნელობა.

ნაბიჯი 5: ოპერაციის რეალური ეფექტი

გირჩევთ: