Სარჩევი:

პროგრამირებადი კლავიატურა: 5 ნაბიჯი (სურათებით)
პროგრამირებადი კლავიატურა: 5 ნაბიჯი (სურათებით)

ვიდეო: პროგრამირებადი კლავიატურა: 5 ნაბიჯი (სურათებით)

ვიდეო: პროგრამირებადი კლავიატურა: 5 ნაბიჯი (სურათებით)
ვიდეო: How to Solve keyboard typing wrong characters - windows 2024, ნოემბერი
Anonim
პროგრამირებადი კლავიატურა
პროგრამირებადი კლავიატურა
პროგრამირებადი კლავიატურა
პროგრამირებადი კლავიატურა

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

ეს კლავიატურა გამოვლენილია როგორც კლავიატურა ყველა ძირითად ოპერაციულ სისტემაში, დამატებითი დრაივერები არ არის საჭირო.

მარაგები

  • მბრუნავი კოდირება.
  • ბევრი (დამოკიდებულია თქვენს საჭიროებებზე) ღილაკზე.
  • Arduino Pro Micro, Arduino Leonardo ან ნებისმიერი სხვა dev board Atmega32U4 MCU– ით.
  • მავთული, solder, soldering რკინის და ა.შ.
  • (სურვილისამებრ) რაღაც მძიმე საფუძველია კლავიატურის მოცურებისგან, მე ვიყენებ ძველ 3.5 დიუმიან მყარ დისკს

ნაბიჯი 1: ელექტრული წრე

ელექტრული წრე
ელექტრული წრე

მე ავირჩიე Arduino Pro Micro dev დაფის გამოყენება Atmega32U4 MCU– ით, რომელსაც აქვს 18 გამოსაყენებელი ციფრული ქინძისთავები.

ღილაკები და მბრუნავი კოდირების დასაკავშირებლად მინიშნებები შეირჩა განსაკუთრებული წესრიგის გათვალისწინებით, მაგრამ ზოგიერთი რამ უნდა აღინიშნოს:

  1. ყველა ციფრული წაკითხვის უნარიანი ქინძისთავები აქვს შიდა გამწევებს, რაც საშუალებას იძლევა შემსუბუქდეს გარე გამწევ რეზისტორები. რა თქმა უნდა, კოდი უნდა განახლდეს შესაბამისად, რადგან ის ელოდება, რომ ღილაკების დაჭერისას პინის მდგომარეობა დაბალიდან მაღალი იქნება.
  2. Encoder.h ბიბლიოთეკის მაგალითში აღინიშნა, რომ კოდირების საუკეთესო მოქმედება მიიღწევა მაშინ, როდესაც MCU– სთან დაკავშირებული ორივე ქინძისთავები წყვეტს შესაძლებელ ქინძისთავებს. Atmega32U4– ის ანალოგიურ ქინძისთავებს არ აქვთ შეწყვეტის შესაძლებლობა.
  3. ზუსტი ჩამოსაშლელი რეზისტორის ღირებულებებს დიდი მნიშვნელობა არ აქვს, 1 kΩ– დან 100 kΩ– მდე ყველაფერი კარგად იმუშავებს. უფრო დიდი წინააღმდეგობის ღირებულებები იძლევა ენერგიის უფრო მცირე გაფრქვევას, მაგრამ იწვევს ძაბვის ცვლილებებზე უფრო ნელა რეაგირებას. უბრალოდ შეარჩიეთ რა მნიშვნელობის რეზისტორები გაქვთ ყველაზე მეტად.
  4. მექანიკური დამშიფრებლები არ არის ყველაზე საიმედო საგნები კონტაქტის აცვიათა და ხახუნის გამო. ამიტომაც არის საჭირო კარგი გამოსავალი. ჩემი არჩეული კონდენსატორის მნიშვნელობები და კოდში დაგვიანებული დრო ალბათ არ მოგაწვდით საუკეთესო შედეგს. ამიტომ ცოტა ექსპერიმენტია საჭირო. ან გადადით ოპტიკურ კოდირებაზე, მაგრამ მისი ფასი მნიშვნელოვნად მაღალია.

ნაბიჯი 2: შეკრება

შეკრება
შეკრება
შეკრება
შეკრება
შეკრება
შეკრება
შეკრება
შეკრება

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

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

ნაბიჯი 3: პროგრამირება

კოდი დაწერილია Arduino IDE– ით. თქვენ უნდა დააინსტალიროთ 2 ბიბლიოთეკა:

  • კოდირება პოლ სტოფრიგენის მიერ
  • კლავიატურა Arduino– ს მიერ

Atmega32U4– ის შესადგენად თქვენ ასევე უნდა დააინსტალიროთ Arduino Pro Micro დაფის ფაილი, Sparkfun– ს აქვს შესანიშნავი სამეურვეო გზა ამის გაკეთება.

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

მთავარ მარყუჟში MCU პირველად კითხულობს თითოეული ღილაკის მდგომარეობას, თუ გამოვლინდა მდგომარეობის შეცვლა LOW– დან HIGH– ში, ფუნქცია keyboard_shortcut (i) შესრულებულია. ცვლადი i არის დაჭერილი ღილაკის ID, ღილაკის მთლიანი ნომერი განისაზღვრება ALL_BUTTONS- ით (ჩემს შემთხვევაში 15). როდესაც შესრულდება, keyboard_shortcut (i) აგზავნის CTRL+SHIFT და შემდეგ ასო, რომელიც აისახება ღილაკის id: 1-> A, 2-> B, 3-> C და ა.შ. ზოგიერთი კომბინაცია, როგორიცაა CTRL+SHIFT+N გამოტოვებულია, რადგან ის უკვე ნაგულისხმევად გამოიყენება Windows 10 -ში (ამ შემთხვევაში ახალი საქაღალდის შესაქმნელად). აქ არის Windows– ის ყველა ნაგულისხმევი მალსახმობების სია. მცირე დაგვიანების შემდეგ MCU აგზავნის სიგნალს ყველა გასაღების გასათავისუფლებლად და ფუნქცია გამოდის მთავარ მარყუჟში.

ყველა ღილაკის შემოწმების შემდეგ, MCU ამოწმებს, შეიცვალა თუ არა მბრუნავი კოდირების პოზიცია და თუ შეიცვალა, keyboard_shortcut (i) შესრულებულია უნიკალური პირადობის მოწმობით.

კოდირების ღილაკი დააჭირეთ ინვერსს encoderButtonFlag ლოგიკური ცვლადი. როდესაც კოდირება ბრუნდება, სხვადასხვა მალსახმობი იგზავნება კომპიუტერში, ეს დამოკიდებულია როტაციის მიმართულებაზე და კოდირების ღილაკზე დროშის მნიშვნელობაზე.

თუ debugFlag არის მითითებული 1 გამართვის შეტყობინება იგზავნება UART– ის სერიულ მონიტორზე.

ნაბიჯი 4: მალსახმობების კონფიგურაცია

მალსახმობების კონფიგურაცია
მალსახმობების კონფიგურაცია
მალსახმობების კონფიგურაცია
მალსახმობების კონფიგურაცია

რასაც თითოეული მალსახმობი აკეთებს თქვენც, ჩვენ ყველას გვაქვს განსხვავებული შეღავათები. მე მოგაწოდებთ რა მალსახმობებს, როგორც მაგალითს, ჩემთვის. მე ვიყენებ Linux Mint 19.3 xfce4 დესკტოპის მენეჯერთან ერთად, ამიტომ ჩემი მაგალითები ძირითადად მოიცავს bash სკრიპტებს, მაგრამ მე ვაჩვენებ რამდენიმე ძირითად მაგალითს Windows 10 -ისთვისაც.

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

უფრო მცირე ზომის 6 ღილაკი ბოლოში არის ისეთი პროგრამების დასაწყებად, როგორიცაა ბრაუზერი ან ფაილ მენეჯერი, ზოგიერთ მათგანს ეწოდება start_only_one_app.sh სკრიპტი, რომელიც იღებს ყველა დაწყებულ პროგრამას და ეძებს იმ პროგრამას, რომლის დაწყებაც გსურთ. თუ პროგრამის ფანჯარა უკვე არსებობს, ის ფოკუსირდება, წინააღმდეგ შემთხვევაში დაიწყება განაცხადის ახალი მაგალითი.

სხვა სკრიპტები:

  • 2nd_display_control.sh - ჩართავს/გამორთავს მეორე მონიტორს.
  • moon_lamp.sh - ჩართავს/გამორთავს ჩემს Moon Lamp- ს.
  • pc_load.sh - ქმნის შეტყობინების ბუშტს პროცესორისა და GPU– ს ამჟამინდელი მოხმარებით და ტემპერატურით.
  • shutdown.sh - იწყებს კომპიუტერის გამორთვას 1 წუთის დაგვიანებით და ქმნის შეტყობინების ბუშტს, რომელშიც ნაჩვენებია დარჩენილი დრო.
  • spec_vpn.sh - უკავშირდება კონკრეტულ OpenVPN სერვერს ან თუ კავშირი უკვე არსებობს, გათიშულია სერვერთან.
  • shortcut_controll.sh - იღებს ბრძანებას (პლუს, მინუს, ჩანართი, დახურვა) არგუმენტად, ამოიცნობს რა ფანჯარაზეა აქცენტი გაკეთებული და თუ კონკრეტული პროგრამა აქტიურია, ასრულებს საკონტროლო მოქმედებას. მაგალითად, ახალი ჩანართის გასახსნელად დიადი ტექსტური რედაქტორის ნაგულისხმევი მალსახმობი არის "CTRL+N" და xfce ტერმინალში - "CTRL+T", ასე რომ, ეს სკრიპტი საშუალებას გაძლევთ გახსნათ ახალი ჩანართი ამაღლებულსა და ტერმინალში ერთი და იგივე ღილაკით.

მბრუნავი კოდირების პირველი ფუნქციაა მოცულობის კონტროლი, მეორე ფუნქცია არის ფანჯრის აქტიური მასშტაბირების კონტროლი shortcut_controll.sh.

Windows OS– სთვის შეგიძლიათ პროგრამების მალსახმობების რუქა პროგრამის თვისებების ფანჯრის საშუალებით, როგორც ეს ნაჩვენებია მეორე სურათზე. სხვა რამისთვის თქვენ გსურთ გამოიყენოთ AutoHotkey. ეს არის ავტომატიზაციის სკრიპტირების ენა Windows- ისთვის.

AHK სინტაქსის რამდენიმე მარტივი მაგალითი:

;Ხმის კონტროლი

^+t:: გაგზავნა {Volume_Up}

დაბრუნების

^+v:: გაგზავნა {Volume_Down}

დაბრუნების

დახურეთ აქტიური ფანჯარა

^+თ:: WinGetTitle, სათაური, ა

PostMessage, 0x112, 0xF060,,, %Title %

დაბრუნების

კომპიუტერის გამორთვა;

^+b:: გათიშვის /ების გაშვება

ნაბიჯი 5: გაუმჯობესება

გაუმჯობესებები
გაუმჯობესებები

რამდენიმე შესაძლო გაუმჯობესება:

  • უკეთესი ხარისხის ღილაკები.
  • პროტოტიპი PCB საკმაოდ იკეცება ღილაკების დაჭერისას.
  • RGB განათება იცვლის ფერს იმისდა მიხედვით, თუ რომელ ფუნქციაზეა დაყენებული მბრუნავი კოდირება.
  • მეტი ღილაკი (გამოიყენეთ IO გაფართოების IC).
  • უკეთესი მბრუნავი კოდირება (ან უკეთესი გამოსავალი).

გირჩევთ: