Ang prinsipyo ng pagpapatakbo ng iminungkahing pagpapakita, na ginawa at itinayo ng Mga Tagagamit sa ilalim ng palayaw alstroemeria, ay ang mga sumusunod: ang mga segment na advanced sa pamamagitan ng servos cast isang anino, na nakikita silang nakikita. Ang natitirang mga segment, na matatagpuan sa parehong eroplano na may background, ay pagsamahin dito.
Malinaw na iyon
gawang bahay Ito ay naging mahal, sapagkat para sa kanya ang master ay nakakakuha ng maraming bilang 28 tulad ng mga servo:
At isang pamamahala ng module na kumokonekta sa
Arduino ganito:
Ang module ng real-time na orasan (RTC) laban sa background na ito ay tila isang maliit na gastos.
Ang pagkakaroon ng nakuha ang lahat ng mga kinakailangang sangkap, ang master sa ngayon ay inilalagay ang mga ito upang magtrabaho sa mga template para sa paggawa ng mekanikal na bahagi ng display. Nakakakuha siya ng apat na file:
1,
2,
3,
4. Ipinapakita ng wizard ang mga file 1 at 3 na dalawang beses sa isang pagputol ng plotter, at 2 at 4, nang paisa-isa, lahat sa isang 1: 1 scale, at nakakakuha ng anim na bahagi, ang ilan sa mga kahawig ng mga lumang card ng suntok sa ilang paraan. Maaari ka ring mag-print, din sa isang scale ng 1: 1 at sa parehong dami, at gupitin nang manu-mano.
Tinanggal ng dremel ang mga guwang na metal na pin na may haba na 20 mm at mga tubo na may panlabas na diameter na bahagyang mas malaki kaysa sa panlabas na diameter ng pin na may haba na 10 mm:
Glues layer na may makapal na double-sided tape, nagdadagdag tubes:
Nagdaragdag ito ng mga palipat-lipat na mga segment na nakadikit sa mga pin na dumaan sa mga tubes, sa reverse side glues steel wire pushers sa parehong mga pin, at ito ay kung saan ang mga pin ay guwang.
Baluktot ito ng mga pushers, glues servos at kumokonekta sa kanila:
Sinasara ang mga servo gamit ang natitirang butas na butil:
Ang module ng kontrol ng servo ay nag-uugnay ayon sa pamamaraan na ibinigay sa simula ng artikulo. Ang mga drive mismo ay konektado sa modyul sa pagkakasunud-sunod na naaayon sa karaniwang mga pagtatalaga ng segment:
Nag-uugnay ang module ng RTC tulad ng sumusunod: SDA - pin 4 Arduino, SCL - pin 5, kasama ang kapangyarihan at karaniwang kawad - kahanay sa kaukulang mga linya ng Arduino. Narito ang resulta:
Itinatakda ng wizard ang oras sa module ng RTC kasama ang sketsa na ito (kailangan mo ng library ng RTClib):
#nagsama
#include "RTClib.h"
RTC_DS1307 RTC;
walang pag-setup () {
Serial.begin (57600);
Wire.begin ();
RTC.begin ();
kung (! RTC.isrunning ()) {
Serial.println ("Ang RTC ay HINDI tumatakbo!");
RTC.adjust (DateTime (__ DATE__, __TIME__));
}
}
Pagkatapos ay pinupuno ito sa pangunahing sketch na nangangailangan ng parehong silid-aklatan:
#include
#include "RTClib.h"
RTC_DS1307 RTC;
maikling segA = 0; // Ipakita ang pin 14
maikling segB = 1; // Ipakita ang pin 16
maikling segC = 2; // Ipakita ang pin 13
maikling segD = 3; // Ipakita ang pin 3
maikling segE = 4; // Ipakita ang pin 5
maikling segF = 5; // Ipakita ang pin 11
maikling segG = 6; // Ipakita ang pin 15
maikling segA_OUT = 110;
maikling segB_OUT = 110;
maikling segC_OUT = 110;
maikling segD_OUT = 110;
maikling segE_OUT = 110;
maikling segF_OUT = 110;
maikling segG_OUT = 110;
maikling segA_IN = 90;
maikling segB_IN = 90;
maikling segC_IN = 90;
maikling segD_IN = 90;
maikling segE_IN = 90;
maikling segF_IN = 90;
maikling segG_IN = 90;
int TIME = 2000;
DateTime datePast;
Petsa ng Petsa Ngayon;
// pag-iingat ng bahay
walang pag-setup () {
Serial.begin (9600);
Wire.begin ();
RTC.begin ();
RTC.adjust (DateTime (__ DATE__, __TIME__));
datePast = RTC.now ();
}
// pangunahing loop
walang bisa na loop () {
dateNow = RTC.now ();
kung (! (datePast.hour () == date Now.hour () && datePast.minute () == dateNow.hour ())
{
displayNumber (date Now.hour () * 100 + dateNow.minute ());
petsaPast = date Ngayon;
}
}
// Ibinigay ang isang numero, ipinapakita namin 10:22
// Matapos tumakbo sa 4 na numero, ang display ay naiwan na naka-off
walang bisa na displayNumber (int toDisplay) {
para sa (int digit = 4; digit> 0; digit--) {
lightNumber (toDisplay% 10, digit);
toDisplay / = 10;
}
// simulang paggalaw
Serial.print ("T"); Serial.println (TIME);
}
walang bisa ilipat (int servo, int posisyon) {
Serial.print ("#");
Serial.print (servo);
Serial.print ("P");
Serial.print (posisyon);
}
// Ibinigay ang isang numero, i-on ang mga segment na iyon
// Kung ang bilang == 10, pagkatapos ay i-off ang numero
walang bisa lightNumber (int numberToDisplay, int segment) {
int offset = (segment - 1) * 7;
lumipat (numberToDisplay) {
kaso 0:
ilipat (segA + offset, segA_OUT);
ilipat (segB + offset, segB_OUT);
ilipat (segC + offset, segC_OUT);
ilipat (segD + offset, segD_OUT);
ilipat (segE + offset, segE_OUT);
ilipat (segF + offset, segF_OUT);
ilipat (segG + offset, segG_IN);
masira;
kaso 1:
ilipat (segA + offset, segA_IN);
ilipat (segB + offset, segB_OUT);
ilipat (segC + offset, segC_OUT);
ilipat (segD + offset, segD_IN);
ilipat (segE + offset, segE_IN);
ilipat (segF + offset, segF_IN);
ilipat (segG + offset, segG_IN);
masira;
kaso 2:
ilipat (segA + offset, segA_OUT);
ilipat (segB + offset, segB_OUT);
ilipat (segC + offset, segC_IN);
ilipat (segD + offset, segD_OUT);
ilipat (segE + offset, segE_OUT);
ilipat (segF + offset, segF_IN);
ilipat (segG + offset, segG_OUT);
masira;
kaso 3:
ilipat (segA + offset, segA_OUT);
ilipat (segB + offset, segB_OUT);
ilipat (segC + offset, segC_OUT);
ilipat (segD + offset, segD_OUT);
ilipat (segE + offset, segE_IN);
ilipat (segF + offset, segF_IN);
ilipat (segG + offset, segG_OUT);
masira;
kaso 4:
ilipat (segA + offset, segA_IN);
ilipat (segB + offset, segB_OUT);
ilipat (segC + offset, segC_OUT);
ilipat (segD + offset, segD_IN);
ilipat (segE + offset, segE_IN);
ilipat (segF + offset, segF_OUT);
ilipat (segG + offset, segG_OUT);
masira;
kaso 5:
ilipat (segA + offset, segA_OUT);
ilipat (segB + offset, segB_IN);
ilipat (segC + offset, segC_OUT);
ilipat (segD + offset, segD_OUT);
ilipat (segE + offset, segE_IN);
ilipat (segF + offset, segF_OUT);
ilipat (segG + offset, segG_OUT);
masira;
kaso 6:
ilipat (segA + offset, segA_OUT);
ilipat (segB + offset, segB_IN);
ilipat (segC + offset, segC_OUT);
ilipat (segD + offset, segD_OUT);
ilipat (segE + offset, segE_OUT);
ilipat (segF + offset, segF_OUT);
ilipat (segG + offset, segG_OUT);
masira;
kaso 7:
ilipat (segA + offset, segA_OUT);
ilipat (segB + offset, segB_OUT);
ilipat (segC + offset, segC_OUT);
ilipat (segD + offset, segD_IN);
ilipat (segE + offset, segE_IN);
ilipat (segF + offset, segF_IN);
ilipat (segG + offset, segG_IN);
masira;
kaso 8:
ilipat (segA + offset, segA_OUT);
ilipat (segB + offset, segB_OUT);
ilipat (segC + offset, segC_OUT);
ilipat (segD + offset, segD_OUT);
ilipat (segE + offset, segE_OUT);
ilipat (segF + offset, segF_OUT);
ilipat (segG + offset, segG_OUT);
masira;
kaso 9:
ilipat (segA + offset, segA_OUT);
ilipat (segB + offset, segB_OUT);
ilipat (segC + offset, segC_OUT);
ilipat (segD + offset, segD_OUT);
ilipat (segE + offset, segE_IN);
ilipat (segF + offset, segF_OUT);
ilipat (segG + offset, segG_OUT);
masira;
kaso 10:
ilipat (segA + offset, segA_IN);
ilipat (segB + offset, segB_IN);
ilipat (segC + offset, segC_IN);
ilipat (segD + offset, segD_IN);
ilipat (segE + offset, segE_IN);
ilipat (segF + offset, segF_IN);
ilipat (segG + offset, segG_IN);
masira;
}
}
Gumagana ang lahat:
Kaya handa na ang mekanikal na pagpapakita ng isang di-walang kuwentang disenyo.