Агуулгын хүснэгт:
Видео: Arduino гүйлгэх текст цаг: 3 алхам
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:02
Энэхүү төслийн зорилго нь цагийг ярьж буй цагийг харуулдаг гүйлгэх текст цаг бүтээх явдал юм (жишээлбэл, "шөнө дунд байна").
Энэ бол хурдан төсөл юм - бид танд тоног төхөөрөмж, ноорогоо ашиглахад хангалттай хэмжээгээр өгөх болно, тэгээд та үүнийг хэрэгцээнд нийцүүлэн цааш нь авч явах боломжтой болно.
Алхам 1: Техник хангамж
Танд гурван үндсэн зүйл хэрэгтэй болно -
- Arduino Uno нийцтэй самбар
- DS1307 эсвэл DS3231 IC ашиглан бодит цагийн цагийн хэлхээ эсвэл модуль
- мөн монохром P10 загварын LED дэлгэц
Та гадны цахилгаан хангамж хүсч магадгүй, гэхдээ бид үүнийг дараа нь авах болно.
Эхний үе шат бол таны цагийг тохируулах явдал юм. Хэрэв танд энэ талаар тусламж хэрэгтэй бол энд дарж хичээлийг үзнэ үү.
Одоогийн байдлаар та "цагаа хэрхэн тохируулах вэ?" Гэж бодож байна гэж найдаж байна.
Гэсэн асуултад хоёр хариулт байна. Хэрэв та DS3231 -ийг ашиглаж байгаа бол нарийвчлал маш сайн байгаа тул үүнийг ноорог дээр байрлуулна уу (доороос үзнэ үү).
Үгүй бол энгийн хэрэглэгчийн интерфэйсийг нэмж оруулаарай-хэд хэдэн товчлуур үүнийг хийж чадна. Эцэст нь та тоног төхөөрөмжийг DMD -ийн ар талд байрлуулах хэрэгтэй. Өөрийнхөө хэрэгцээг хангах хангалттай өргөн цар хүрээтэй, энгийн шийдэл нь хяналтын самбарыг тэгшлэх бөгөөд ингэснээр та USB залгуурт хялбархан хандаж, дараа нь Sugru дээр наалдуулж болно.
Цагийг асаахтай холбоотойгоор та Arduino -аас НЭГ LED дэлгэц ажиллуулж болох бөгөөд гэр дотор сайн ашиглах боломжтой. Хэрэв та DMD-ийг бүрэн ажиллуулахыг хүсч байвал нүдний торлог бүрхэвчийг шатаах гэрэлтүүлгийг 5V 4A тогтмол гүйдлийн тусдаа тэжээлийн хангамж ашиглах хэрэгтэй. Хэрэв та хоёр DMD ашигладаг бол энэ нь 8А гэсэн утгатай болно. Гаднах хүчийг зөвхөн нэг DMD терминал руу холбоно уу (хоёр ба түүнээс дээш DMD -ийг эдгээр терминал руу холбоно уу).
Хэрэв та цахилгаан тэжээлийн кабелийнхаа төгсгөлийг огтлохыг хүсэхгүй байгаа бол DC залгуурыг ашиглана уу.
Алхам 2: Arduino ноорог
Та дараах хоёр Arduino номын санг суулгах хэрэгтэй болно - TimerOne ба DMD. Дараа нь ноорогоо байршуулна уу:
// RTC #-т "Wire.h" оруулах #DS1307_I2C_ADDRESS 0x68 -ийг тодорхойлох // DS1307 RTC нь 0x68 байна
// LED дэлгэцийн хувьд
#"SPI.h" оруулах #"DMD.h" оруулах мөр #тодорхойлох DISPLAYS_DOWN 1 DMD dmd (DISPLAYS_ACROSS, DISPLAYS_DOWN);
String finalString; // DMD дээр харуулах эцсийн өгүүлбэрийг барихад ашигладаг
void ScanDMD () // DMD -д шаардлагатай
{dmd.scanDisplayBySPI (); }
хүчингүй тохиргоо ()
{// DMD Timer1.initialize (5000) хувьд; Timer1.attachInterrupt (ScanDMD); dmd.clearScreen (үнэн);
// RTC -ийн хувьд
Wire.begin (); // I2C автобусны байтыг секунд, минут, цаг, өдөрOfWeek, dayOfMonth, сар, жил хүртэл гал асаах; // хувьсагчдыг өөрчилж, цагийг тохируулахын тулд setDateDs1307-т тайлбар өгөхгүй // функцийг дахин тайлбарлаж, ноорогоо дахин хоёр дахь удаагаа байршуулна уу = 0; минут = 13; цаг = 23; dayOfWeek = 4; dayOfMonth = 19; сар = 5; жил = 13; // setDateDs1307 (секунд, минут, цаг, өдөрOfWeek, dayOfMonth, сар, жил); }
// ердийн RTC функцууд
// Ердийн аравтын бутархай тоог хоёртын кодчилсон аравтын байт болгон хөрвүүлэх decToBcd (byte val) {return ((val/10*16) + (val%10)); }
// Хоёртын кодчилсон аравтын бутархайг ердийн аравтын тоо болгон хөрвүүлэх
байт bcdToDec (byte val) {буцах ((val/16*10) + (val%16)); }
хүчингүй setDateDs1307 (байт секунд, // 0-59
байт минут, // 0-59 байт цаг, // 1-23 байт өдөрOfWeek, // 1-7 байт өдөрOfMonth, // 1-28/29/байт сар, // 1-12 байт жил) // 0- 99 {Wire.beginTransmission (DS1307_I2C_ADDRESS); Wire.write (0); Wire.write (decToBcd (секунд)); // 0 -ээс бит 7 хүртэл Wire.write цагийг эхлүүлнэ (decToBcd (минут)); Wire.write (decToBcd (цаг)); Wire.write (decToBcd (dayOfWeek)); Wire.write (decToBcd (dayOfMonth)); Wire.write (decToBcd (сар)); Wire.write (decToBcd (жил)); Wire.write (00010000); // 0x10 (hex) 00010000 (binary) хяналтын бүртгэл рүү илгээдэг - Wire.endTransmission квадрат долгионыг асаадаг; }
// ds1307 -аас огноо, цагийг авна
void getDateDs1307 (байт *секунд, байт *минут, байт *цаг, байт *dayOfWeek, байт *dayOfMonth, байт *сар, байт *жил) {// Бүртгэлийн заагчийг дахин тохируулах Wire.beginTransmission (DS1307_I2C_ADDRESS); Wire.write (0); Wire.endTransmission ();
Wire.requestFrom (DS1307_I2C_ADDRESS, 7);
// Эдгээрийн зарим нь маск хэрэгтэй, учир нь зарим битүүд нь хяналтын битүүд байдаг
*секунд = bcdToDec (Wire.read () & 0x7f); *минут = bcdToDec (Wire.read ()); *цаг = bcdToDec (Wire.read () & 0x3f); // Өглөөний 12 цаг/орой *dayOfWeek = bcdToDec (Wire.read ()) байвал үүнийг өөрчлөх шаардлагатай; *dayOfMonth = bcdToDec (Wire.read ()); *сар = bcdToDec (Wire.read ()); *жил = bcdToDec (Wire.read ()); }
void drawText (String oldString)
{dmd.clearScreen (үнэн); dmd.selectFont (Arial_Black_16); char newString [256]; int sLength = oldString.length (); oldString.toCharArray (newString, sLength+1); dmd.drawMarquee (newString, sLength, (32*DISPLAYS_ACROSS) -1, 0); урт эхлэх = millis (); урт таймер = эхлэх; урт таймер2 = эхлэх; boolean ret = худал; while (! ret) {if ((timer+20) <millis ()) {ret = dmd.stepMarquee (-1, 0); таймер = миллис (); }}}
void createTextTime (int hh, int mm)
// энэ нь бүх цагийн мэдээллийг нэг өгүүлбэр болгон нэгтгэдэг {finalString = ""; // онцгой тохиолдолд өгүүлбэрийг арчина (доор) finalString = finalString+"Энэ";
// одоо цаг нэмнэ үү
if (hh == 1 || hh == 13) {finalString = finalString+"one"; } if (hh == 2 || hh == 14) {finalString = finalString+"хоёр"; } if (hh == 3 || hh == 15) {finalString = finalString+"гурван"; } if (hh == 4 || hh == 16) {finalString = finalString+"four"; } if (hh == 5 || hh == 17) {finalString = finalString+"тав"; } if (hh == 6 || hh == 18) {finalString = finalString+"six"; } if (hh == 7 || hh == 19) {finalString = finalString+"долоон"; } if (hh == 8 || hh == 20) {finalString = finalString+"найман"; } if (hh == 9 || hh == 21) {finalString = finalString+"есөн"; } if (hh == 10 || hh == 22) {finalString = finalString+"ten"; } if (hh == 11 || hh == 23) {finalString = finalString+"арван нэгэн"; }
// одоо минут нэмнэ үү
шилжүүлэгч (мм) {тохиолдол 1: finalString = finalString+"өө нэг"; завсарлага; тохиолдол 2: finalString = finalString+"өө хоёр"; завсарлага; тохиолдол 3: finalString = finalString+"өө гурван"; завсарлага; тохиолдол 4: finalString = finalString+"өө дөрвөн"; завсарлага; тохиолдол 5: finalString = finalString+"өө тав"; завсарлага; тохиолдол 6: finalString = finalString+"өө зургаа"; завсарлага; тохиолдол 7: finalString = finalString+"өө долоон"; завсарлага; тохиолдол 8: finalString = finalString+"өө найман"; завсарлага; тохиолдол 9: finalString = finalString+"өө есөн"; завсарлага; тохиолдол 10: finalString = finalString+"арван"; завсарлага; тохиолдол 11: finalString = finalString+"арван нэгэн"; завсарлага; тохиолдол 12: finalString = finalString+"арван хоёр"; завсарлага; тохиолдол 13: finalString = finalString+"арван гурван"; завсарлага; тохиолдол 14: finalString = finalString+"арван дөрвөн"; завсарлага; тохиолдол 15: finalString = finalString+"арван таван"; завсарлага; тохиолдол 16: finalString = finalString+"арван зургаан"; завсарлага; тохиолдол 17: finalString = finalString+"арван долоон"; завсарлага; тохиолдол 18: finalString = finalString+"арван найман"; завсарлага; тохиолдол 19: finalString = finalString+"арван есөн"; завсарлага; тохиолдол 20: finalString = finalString+"хорин"; завсарлага; тохиолдол 21: finalString = finalString+"хорин нэг"; завсарлага; тохиолдол 22: finalString = finalString+"хорин хоёр"; завсарлага; тохиолдол 23: finalString = finalString+"хорин гурван"; завсарлага; тохиолдол 24: finalString = finalString+"хорин дөрвөн"; завсарлага; тохиолдол 25: finalString = finalString+"хорин таван"; завсарлага; тохиолдол 26: finalString = finalString+"хорин зургаа"; завсарлага; тохиолдол 27: finalString = finalString+"хорин долоон"; завсарлага; тохиолдол 28: finalString = finalString+"хорин найман"; завсарлага; тохиолдол 29: finalString = finalString+"хорин ес"; завсарлага; тохиолдол 30: finalString = finalString+"гучин"; завсарлага; тохиолдол 31: finalString = finalString+"гучин нэг"; завсарлага; тохиолдол 32: finalString = finalString+"гучин хоёр"; завсарлага; тохиолдол 33: finalString = finalString+"гучин гурван"; завсарлага; тохиолдол 34: finalString = finalString+"гучин дөрвөн"; завсарлага; тохиолдол 35: finalString = finalString+"гучин таван"; завсарлага; тохиолдол 36: finalString = finalString+"гучин зургаа"; завсарлага; тохиолдол 37: finalString = finalString+"гучин долоон"; завсарлага; тохиолдол 38: finalString = finalString+"гучин найман"; завсарлага; тохиолдол 39: finalString = finalString+"гучин ес"; завсарлага; тохиолдол 40: finalString = finalString+"дөчин"; завсарлага; тохиолдол 41: finalString = finalString+"дөчин нэг"; завсарлага; тохиолдол 42: finalString = finalString+"дөчин хоёр"; завсарлага; тохиолдол 43: finalString = finalString+"дөчин гурван"; завсарлага; тохиолдол 44: finalString = finalString+"дөчин дөрвөн"; завсарлага; тохиолдол 45: finalString = finalString+"дөчин таван"; завсарлага; тохиолдол 46: finalString = finalString+"дөчин зургаа"; завсарлага; тохиолдол 47: finalString = finalString+"дөчин долоон"; завсарлага; тохиолдол 48: finalString = finalString+"дөчин найман"; завсарлага; тохиолдол 49: finalString = finalString+"дөчин ес"; завсарлага; тохиолдол 50: finalString = finalString+"тавин"; завсарлага; тохиолдол 51: finalString = finalString+"тавин нэг"; завсарлага; тохиолдол 52: finalString = finalString+"тавин хоёр"; завсарлага; тохиолдол 53: finalString = finalString+"тавин гурван"; завсарлага; тохиолдол 54: finalString = finalString+"тавин дөрвөн"; завсарлага; тохиолдол 55: finalString = finalString+"тавин таван"; завсарлага; тохиолдол 56: finalString = finalString+"тавин зургаан"; завсарлага; тохиолдол 57: finalString = finalString+"тавин долоон"; завсарлага; тохиолдол 58: finalString = finalString+"тавин найман"; завсарлага; тохиолдол 59: finalString = finalString+"тавин есөн"; завсарлага; }
// Үд дунд?
if (hh == 12 && mm == 0) {finalString = finalString+"үд дунд"; } // шөнө дунд уу? if (hh == 00 && mm == 0) {finalString = finalString+"шөнө дунд"; }
}
хоосон давталт ()
{// RTC байтаас секунд, минут, цаг, dayOfWeek, dayOfMonth, сар, жилээс цаг авах; getDateDs1307 (& секунд, & минут, & цаг, & dayOfWeek, & dayOfMonth, & сар, жил);
// цагийг өгүүлбэрийн мөр болгон хөрвүүлэх
createTextTime (цаг, минут);
// одоо текстийг DMD рүү илгээнэ үү
drawText (finalString); }
Энэхүү ноорог нь DS1307/3232 бодит цагийн IC-ээс цагийг тохируулах, авах ердийн функцтэй бөгөөд ердийн цагийн хуваарийн дагуу та цагийн мэдээллийг хүчингүй тохиргоонд хувьсагч руу оруулах боломжтой (), дараа нь setDateDs1307 () дээр тайлбар өгөхгүй байх, ноорог байршуулж, setDateDs1307 дээр дахин сэтгэгдэл бичээд дараа нь ноорогоо дахин нэг удаа байршуулна уу. Хэрэв та тоног төхөөрөмжид суурилсан хэрэглэгчийн интерфэйс нэмээгүй бол цагийг дахин тохируулахын тулд процедурыг давтана уу.
Алхам 3:
Цагийг void loop () дээр авсны дараа createTextTime () функцэд дамжуулагдана. Энэ функц нь "Энэ" -ээс эхэлж харуулах текст мөрийг үүсгэж, тухайн цаг хугацаанаас хамаарч ямар үгсийг дагахыг тодорхойлдог. Эцэст нь drawText () функц нь текстийг агуулсан мөрийг DMD рүү дамжуулж болох тэмдэгт хувьсагч болгон хувиргадаг.
Зөвлөмж болгож буй:
Цахим гүйлгэх нэрсийн хар арьстан нь чухал: 5 алхам
Цахим гүйлгэх нэрний хар тэмдэг нь хар арьстнуудын хувьд чухал ач холбогдолтой юм: #sayhername, #sayhisname, #saytheirname кампанит ажил нь арьс өнгөөр ялгаварлан гадуурхах цагдаагийн хүчирхийлэлд өртсөн хар арьст хүмүүсийн нэр, түүхийг ухамсарлаж, арьс өнгөөр ялгаварлан гадуурхах шударга ёсыг сурталчлахыг дэмждэг. Шаардлагын талаар дэлгэрэнгүй мэдээлэл болон
Гүйлгэх текст дэлгэц (A -аас Z хүртэлх гарын авлага): 25 алхам (зурагтай)
Текстийг гүйлгэх (A -аас Z хүртэлх гарын авлага): Энэхүү зааварчилгаа / видеонд би Arduino ашиглан гүйлгэх текст дэлгэцийг хэрхэн яаж хийх талаар алхам алхмаар зааварчилгаа өгөх болно. Би Arduino -д хэрхэн код хийхийг тайлбарлахгүй, одоо байгаа кодыг хэрхэн ашиглахыг танд үзүүлэх болно. Юу, хаана хамтран ажиллах шаардлагатай байна
DIY LED цэг матрицын гүйлгэх дэлгэц нь Arduino ашиглан: 6 алхам
DIY LED цэг матриц гүйлгэх дэлгэц Arduino ашиглан: Сайн байна уу Энэ бол миний анхны заавар юм. Энэхүү зааварчилгаанд би DIY LED цэг матрицын гүйлгэх дэлгэцийг Arduino ашиглан MCU болгон хэрхэн хийхийг харуулах болно.Төмөр замын вокзал, автобусны буудал, гудамж болон бусад олон газруудад ийм төрлийн дэлгэц байрлуулна. Тэнд
Arduino болон Bluetooth ашиглан гүйлгэх дэлгэцийг хэрхэн яаж хийх вэ: 4 алхам
Arduino болон Bluetooth ашиглан гүйлгэх дэлгэцийг хэрхэн яаж хийх вэ: Миний YouTube сувагт зочилно уу. Энэ нийтлэлд би " Та хэрхэн arduino ашиглан гүйлгэх дэлгэц хийж, ухаалаг гар утсаараа удирдаж болох вэ? ' Bluetooth ашиглан та хамгийн ихдээ 63 тэмдэгт илгээх боломжтой бөгөөд програмаар дамжуулан
Уйтгартай гүйлгэх дугуй дарах арилгагч (гөлгөр гүйлгэх): 5 алхам
Уйтгартай гүйлгэх дугуй арилгагч дээр дарна уу (гөлгөр гүйлгэх): гүйлгэх хүрдний чимээнд та бухимдаж байна уу? Энэ товчлуурыг гүйлгээнээс гаргах боломж энд байна. Хэрэв та хулганаа хугалсан бол миний буруу биш. Би энэ горимыг logitech хулганаар хийж байна. Энэ нь бусад хулгана дээр ажиллах болно гэдэгт би итгэлтэй биш байна