วิธีซิงโครไนซ์นาฬิกาในบ้าน วิธีซิงโครไนซ์นาฬิกาข้อมือกับอะตอม: เงื่อนไขอยู่ที่บ้าน ดังนั้น วิธีซิงโครไนซ์นาฬิกาข้อมือของคุณกับนาฬิกาอะตอมและตั้งเวลาที่แน่นอน

ตามที่เราทุกคนจำได้จากหลักสูตรประวัติศาสตร์ของโรงเรียน มนุษยชาติเริ่มนับเวลาที่แน่นอนโดยการสังเกตการเคลื่อนที่ของเทห์ฟากฟ้าและนับชั่วโมงในแต่ละวันของโลก เมื่อเทคโนโลยีก้าวหน้าขึ้น ความต้องการเวลาที่แม่นยำยิ่งขึ้นก็เพิ่มมากขึ้นเท่านั้น วันนี้ทั้งโลกมีชีวิตอยู่ด้วยนาฬิกาอะตอมซึ่งตามระบบสากลของหน่วย SI เวลาที่แน่นอนจะคำนวณโดยการแผ่รังสีแม่เหล็กไฟฟ้าที่เกิดขึ้นระหว่างการเปลี่ยนแปลงระหว่างระดับไฮเปอร์ไฟน์สองระดับของสถานะพื้นดินของอะตอม

หากไม่มีนาฬิกาอะตอม การทำงานของระบบนำทางสมัยใหม่ (รวมถึง GPS, GLONASS, Galileo) ระบบดาวเทียมและระบบโทรคมนาคมภาคพื้นดิน โดยเฉพาะสถานีสื่อสารเคลื่อนที่ จะเป็นไปไม่ได้ในปัจจุบัน

หลายประเทศได้จัดตั้งศูนย์มาตรฐานด้านเวลาและความถี่แห่งชาติ รวมถึงบริการด้านเวลาที่เที่ยงตรงซึ่งออกอากาศสัญญาณบอกเวลาทางวิทยุเป็นระยะๆ

งานปรับปรุงคุณลักษณะของนาฬิกาอะตอมกำลังดำเนินการอยู่ และระบบและวิธีการซิงโครไนซ์อุปกรณ์อิเล็กทรอนิกส์ประเภทต่างๆ กับนาฬิกาอะตอมก็ได้รับการปรับปรุงเช่นกัน ยิ่งไปกว่านั้น เมื่อเร็ว ๆ นี้นาฬิกาบางยี่ห้อได้เริ่มผลิตนาฬิกาที่มีฟังก์ชั่นการสอบเทียบความแม่นยำของหลักสูตรโดยอัตโนมัติตามสัญญาณเวลาที่แน่นอนจากนาฬิกาอะตอม แต่ในความเป็นจริงแล้ว นาฬิกาใดๆ ก็สามารถซิงโครไนซ์กับนาฬิกาอะตอมได้

ในการทำเช่นนี้ก็เพียงพอแล้วที่จะรู้ว่าเวลาถูกตั้งไว้อย่างไรในรุ่นใดรุ่นหนึ่ง (ตัวอย่างเช่น เราใช้นาฬิกาข้อมือ Romanson - mir-chasov.ks.ua/shop/romanson- โครโนกราฟ) และมีข้อมูลในมือเกี่ยวกับเวลาที่แน่นอนจากนาฬิกาอะตอม (เซิร์ฟเวอร์ / เว็บไซต์ของเวลาที่แน่นอน) พูดง่ายๆ คุณต้องมีคู่มือผู้ใช้นาฬิกาข้อมือและนาฬิกาอะตอม - ไม่มีอะไรซับซ้อน

ดังนั้น วิธีซิงโครไนซ์นาฬิกาข้อมือของคุณกับนาฬิกาอะตอมและตั้งเวลาที่แน่นอน

1. ขั้นแรก เราเตรียมนาฬิกาสำหรับการตั้งค่า ในรุ่นอะนาล็อก เวลาถูกกำหนดโดยเม็ดมะยม ซึ่งตามกฎแล้วจะต้องดึงออกจากตัวเรือนไปยังตำแหน่งที่แน่นอน (สำหรับ Romanson ของเรา นี่คือตำแหน่งที่สองจากสามตำแหน่งที่เป็นไปได้) ในนาฬิกาดิจิตอลเวลาจะถูกตั้งค่าโดยปุ่มใดปุ่มหนึ่งบนตัวเรือนซึ่งต้องกดในทางตรงกันข้าม โปรดจำไว้ว่าควรแปลลูกศรไปพร้อมกันเท่านั้น

2. ตั้งชั่วโมงและนาทีตามเวลาปัจจุบัน ปล่อยให้นาฬิกาเดินจนกว่าเข็มวินาที (หรือตัวนับวินาที) จะไปที่ศูนย์ (ทำเครื่องหมาย 12 บนหน้าปัดอนาล็อกและ 0 บนหน้าปัดดิจิตอล) ตำแหน่งของเข็มนาทีอาจเปลี่ยนแปลงเล็กน้อย แต่เป็นเรื่องปกติ เราจะตั้งค่านาทีอีกครั้ง หลังจากตั้งเข็มวินาทีเป็น 12 เราจะหยุดนาฬิกา (ใน Romanson คุณต้องกดเม็ดมะยมไปที่ตำแหน่งสุดขีดเพื่อสิ่งนี้)

3. เราไปที่เซิร์ฟเวอร์เวลาที่แน่นอน เราใช้ข้อมูลบริการของ time.is (ในขณะเดียวกันคุณจะพบว่านาฬิกาบนคอมพิวเตอร์ สมาร์ทโฟน หรือแท็บเล็ตของคุณมีความแม่นยำเพียงใด)

4. เราจับช่วงเวลาที่นาฬิกาอะตอมเปลี่ยนนาทีถัดไปและวินาที "รีเซ็ต" เป็นศูนย์และตั้งนาฬิกาล่วงหน้าหนึ่งนาที ตัวอย่างเช่น หากเซิร์ฟเวอร์เวลาที่แน่นอนแสดงเป็น 12:35:00 เราก็ตั้งค่าเป็น 12:36 ต่อไปเรารอช่วงเวลาของการ "ศูนย์" ถัดไปของวินาทีบนนาฬิกาอะตอมและเริ่มนาฬิกาของเรา นั่นคือเวลา 12:35:59 น. เรากดมงกุฎของ Romansons กลับไปที่ตำแหน่งล่างและเริ่มกลไก เพียงเท่านี้นาฬิกาของเราก็ซิงโครไนซ์กับนาฬิกาอะตอมแล้ว

และโดยสรุป โดยเฉพาะอย่างยิ่งสำหรับผู้ที่ชื่นชอบเวลาที่เที่ยงตรงสูง เราจำได้/ชี้แจงว่ามีข้อผิดพลาดเสมอระหว่างการอ่านนาฬิกาอะตอมจริงกับการอ่านของเซิร์ฟเวอร์เวลาที่แน่นอนใดๆ นอกจากนี้ ยังมีข้อผิดพลาดระหว่างการอ่านค่าของเซิร์ฟเวอร์และการอ่านค่านาฬิกาบนหน้าจอของอุปกรณ์ที่เข้าถึงเซิร์ฟเวอร์นี้ กล่าวง่ายๆ ก็คือ ขณะที่สัญญาณมาถึงเซิร์ฟเวอร์ จากนั้นจากเซิร์ฟเวอร์ไปยังอุปกรณ์สื่อสารของคุณ (เวลาขนส่งขึ้นอยู่กับความห่างไกลของเซิร์ฟเวอร์ แบนด์วิธและความคับคั่งของช่องสัญญาณอินเทอร์เน็ต และพารามิเตอร์อื่นๆ อีกจำนวนหนึ่ง) การอ้างอิง นาฬิกาอะตอมจะเดินไปข้างหน้าแล้ว และนาฬิกาของคุณจะใช้เวลาอย่างน้อยเสี้ยววินาที แต่จะล้าหลัง ดังนั้นขั้นตอนการดูที่อธิบายไว้ข้างต้นจึงไม่ใช่วิธีที่สมบูรณ์แบบที่สุด แต่อย่างไรก็ตามในระดับครัวเรือนก็เพียงพอแล้ว โดยเฉพาะอย่างยิ่งถ้าคุณใช้นาฬิกากลไก บทความนี้ใช้วัสดุจากเว็บไซต์ของ บริษัท "World of Clocks"

เมื่อเรียนรู้เทคโนโลยีใหม่หรือภาษาการเขียนโปรแกรม แนวคิดพื้นฐานมักจะค่อนข้างเป็นกิจวัตร ดังนั้นในความเห็นของฉัน จึงกีดกันผู้เริ่มต้นอย่างรวดเร็วจากการเรียนรู้ บทความนี้มีวัตถุประสงค์เพื่อดึงดูดความสนใจและดึงดูดผู้อ่านด้วยการศึกษาการเขียนโปรแกรมโดยใช้ตัวอย่างการพัฒนากราฟิกพื้นฐานในโหมดไดนามิก บทความนี้เหมาะสำหรับนักพัฒนามือใหม่ที่คุ้นเคยกับพื้นฐานของ HTML5 และ JavaScript และผู้ที่เบื่อที่จะเห็นข้อความคงที่บนหน้าเมื่อแสดงอาร์เรย์ วัตถุ ผลลัพธ์ของการดำเนินการทางคณิตศาสตร์ ฯลฯ ไปยังคอนโซลของเบราว์เซอร์ ต่อไป เราจะใช้แอนิเมชันที่เรียบง่ายแต่มีประโยชน์ในการทำความเข้าใจภาษา เราจะทำอย่างไร พิจารณาขั้นตอนการสร้างนาฬิกาอะนาล็อกอย่างง่ายโดยใช้ HTML5 และ JavaScript เราจะวาดนาฬิกาด้วยกราฟิกดั้งเดิมโดยไม่ต้องใช้เครื่องมือ CSS เราจะจำรูปทรงเรขาคณิตบางอย่างเพื่อแสดงกราฟิกของเรา จำคณิตศาสตร์บางอย่างเพื่อใช้ตรรกะการแสดงผลของนาฬิกาเคลื่อนไหวของเรา และโดยทั่วไปแล้ว เราจะพยายามลดเอนโทรปีในความรู้เกี่ยวกับภาษา JavaScript สำหรับการพัฒนา เราต้องการโปรแกรมแก้ไขข้อความ เช่น Notepad++ หรือ Sublime Text 3 การใช้งานนาฬิกาดิจิทัล มาสร้างไฟล์สามไฟล์ในโปรแกรมแก้ไขข้อความ (ทั้งสามไฟล์ต้องอยู่ในโฟลเดอร์เดียวกัน)

index.html- หน้าหลัก
clockscript.js- สคริปต์พร้อมตรรกะการทำงาน
style.css- ไฟล์สไตล์

ขั้นแรก ให้แสดงเวลาปัจจุบันตามปกติ แผนก- บล็อกในไฟล์ .html แม้แต่ในงานเล็กๆ น้อยๆ ก็ยังมีข้อผิดพลาด หากคุณเพียงแค่ใส่ฟังก์ชั่นการแสดงนาฬิกาลงในเหตุการณ์ onload ของแท็ก ร่างกายจากนั้นเวลาปัจจุบันจะแสดงในสตริง แต่จะคงที่ และ แผนก- บล็อกที่เราส่งสตริงด้วยเวลาปัจจุบันจะไม่อัปเดตตัวเอง

คุณสามารถอัปเดตองค์ประกอบของหน้าด้วยตนเองได้โดยการรวมฟังก์ชันการแสดงเวลาไว้ในวิธีการที่ไม่ระบุชื่อซึ่งกำหนดให้กับคุณสมบัติ onload ของวัตถุหน้าต่างรูท

การดำเนินการอย่างหนึ่งอาจเป็นดังนี้ ไฟล์ index.html:

ร่างนาฬิกาโดย JavaScript งานผ้าใบ:
นี่จะเป็นเวลาปัจจุบัน

ไฟล์ style.css:

#clock( font-family:Tahoma, sans-serif; font-size:20px; font-weight:bold; color:#0000cc; )
ไฟล์ clockscript.js:

Window.onload = function()( window.setInterval(function()( var d = new Date(); document.getElementById("clock").innerHTML = d.toLocaleTimeString(); ) , 1,000); )
มาจัดการกับงานกันเถอะ clockscript.js:

เรารันโค้ด JavaScript ภายในโดยเชื่อมโยงกับเหตุการณ์ onload ของวัตถุหน้าต่างรูท:

Window.onload = function()(/*บลา บลา บลา*/)
วิธีการของวัตถุหน้าต่างที่เรียกใช้รหัสในช่วงเวลาปกติ (ระบุเป็นมิลลิวินาที):

Window.setInterval(function()(/*มีการดำเนินการที่รวมอยู่ในฟังก์ชันที่จะดำเนินการทุกๆ 1,000 มิลลิวินาที*/) , 1,000);
วัตถุ Date ใช้ในการจัดการวันที่และเวลาต่างๆ ใช้ตัวสร้าง เราสร้างอินสแตนซ์ของมันและเรียกมันว่า :

Vard = วันที่ใหม่ ();
เราค้นหาวัตถุ DOM ตามรหัสของมัน นี่คือวัตถุที่เราต้องการแสดงเวลาของเรา อาจเป็นย่อหน้า หัวเรื่อง หรือองค์ประกอบอื่นๆ ฉันมีมัน แผนก-ปิดกั้น. หลังจากรับองค์ประกอบด้วย id แล้ว เราใช้คุณสมบัติ innerHTML เพื่อรับเนื้อหาทั้งหมดขององค์ประกอบพร้อมกับมาร์กอัปภายใน และส่งผ่านผลลัพธ์ของวิธีการที่นั่น toLocaleTimeString()ซึ่งส่งคืนการแสดงเวลาในรูปแบบ:

Document.getElementById("นาฬิกา").innerHTML = d.toLocaleTimeString();
นี่คือสิ่งที่ควรมีลักษณะ (เวลาเปลี่ยนแปลงแบบไดนามิกทุก ๆ วินาที):

การใช้งานนาฬิกาอะนาล็อก จากนี้ไป เราจะใช้ Canvas (HTML) เพื่อทำหน้าที่เป็นผืนผ้าใบสร้างสรรค์ของเรา

หากต้องการดูผืนผ้าใบของเราในไฟล์ index.htmlในร่างกาย เราต้องวางแท็กต่อไปนี้ไว้ที่ใดที่หนึ่งโดยกำหนดขนาดทันที:


ตอนนี้อยู่ในไฟล์ clockscript.jsก่อนที่จะลองวาด คุณต้องเข้าใจบริบทของวัตถุ Canvas ก่อน เราจะดำเนินการนี้เมื่อเริ่มต้นฟังก์ชันการแสดงนาฬิกาของเรา จากนั้นไฟล์ clockscript.jsจะมีการเปลี่ยนแปลงดังนี้

ฟังก์ชัน displayCanvas()( var canvasHTML = document.getElementById("myCanvas"); var contextHTML = canvasHTML.getContext("2d"); contextHTML.strokeRect(0,0,canvasHTML.width, canvasHTML.height); // สิ่งนี้จะ เป็นตรรกะนาฬิกาทั้งหมดและรหัสการแสดงผลผ่านการส่งคืนแบบกราฟิก ) window.onload = function()( window.setInterval(function()( var d = new Date(); document.getElementById("clock").innerHTML = d toLocaleTimeString (); displayCanvas(); ) , 1,000); )
เรามาจำคณิตศาสตร์กันดีไหม เป็นสิ่งสำคัญสำหรับเราที่จะต้องเข้าใจความเชื่อมโยงระหว่างส่วนต่างๆ ของเข็มนาฬิกาบางเข็มกับมุมการหมุนบนหน้าปัดในอนาคต

มุมการหมุนของเข็มนาฬิกาทั้งหมดใน 1 วินาที:

  • เข็มวินาทีจะหมุนเป็นมุม - (1/60) * 360 o = 6 o
  • เข็มนาทีจะหมุนเป็นมุม - (1/60)*6 o = 0.1 o
  • เข็มชั่วโมงจะหมุนเป็นมุม - (1/60) * 0.1 o ≈ 0.0017 o
ปัญหาแรก:

นั่นคือแม้ใน 1 วินาที ลูกธนูทั้งหมดจะต้องหมุนตามมุมที่สอดคล้องกัน และหากไม่คำนึงถึงสิ่งนี้ข้อผิดพลาดแรกที่เราได้รับจากหน้าจอจะเป็นแอนิเมชั่นที่น่าเกลียด ตัวอย่างเช่น เมื่อเวลา 19:30 น. เข็มชั่วโมงจะชี้ตรงไปที่ 19 นาฬิกา แม้ว่าในชีวิตจริงควรจะอยู่ที่ 20 นาฬิกาไปแล้วครึ่งหนึ่ง ในทำนองเดียวกัน การเดินที่ราบรื่นของเข็มนาทีจะดูดีขึ้น ให้เข็มวินาทีคลิกผ่านการเคลื่อนไหวแบบไม่ต่อเนื่อง เช่นเดียวกับนาฬิการะบบกลไกส่วนใหญ่ วิธีแก้ไขปัญหา: เพิ่มมุมการหมุนของลูกศรปัจจุบันลงในมุมการหมุนของลูกศรที่เร็วขึ้นคูณด้วยค่าสัมประสิทธิ์ซึ่งแสดงถึงส่วนแบ่งจากมุมของลูกศรปัจจุบัน

การดำเนินการ:

Var t_sec = 6*d.getSeconds(); //กำหนดมุมสำหรับวินาที var t_min = 6*(d.getMinutes() + (1/60)*d.getSeconds()); //กำหนดมุมสำหรับนาที var t_hour = 30*(d.getHours() + (1/60)*d.getMinutes()); // กำหนดมุมสำหรับนาฬิกา
ปัญหาที่สอง:

มุมของเวกเตอร์รัศมีการหมุน (เข็มนาฬิกา) วัดจากทิศทางบวกในทิศทางทวนเข็มนาฬิกา หากเราไม่คำนึงถึงสิ่งนี้ในตรรกะของเรา เราจะส่งนาฬิกากลับไปในอดีต

แต่การนับถอยหลังของชั่วโมง นาที และวินาทีมาจากเลข 12 ตำแหน่งบน วิธีแก้ไขปัญหา: ในสูตรของเรา เราต้องคำนึงถึงสิ่งนี้ด้วยการเปลี่ยนแปลงของ +π / 2 (90 o) และก่อนค่าของมุมให้ใส่เครื่องหมาย "-" เพื่อให้นาฬิกาหมุนตามเข็มนาฬิกา และแน่นอนว่าการถ่ายโอนมุมเป็นองศาไปยังฟังก์ชันตรีโกณมิติของภาษาการเขียนโปรแกรมนั้นดำเนินการด้วยการคูณด้วยค่าสัมประสิทธิ์ "π/180 o"

การดำเนินการตามตัวอย่างของเข็มวินาที:

ContextHTML.moveTo(xCenterClock, yCenterClock); contextHTML.lineTo(xCenterClock + lengthSeconds*Math.cos(Math.PI/2 - t_sec*(Math.PI/180)), yCenterClock - lengthSeconds*Math.sin(Math.PI/2 - t_sec*(Math.PI/ 180)));
ปัญหาที่สาม:

ในระหว่างการทำเครื่องหมายภาพวาดของหน้าปัดคุณต้องเน้นภาพวาดที่อยู่ด้านหน้านาฬิกา ภาพวาดทั้งหมด - 60 วินาทีและนาที 12 เป็นชั่วโมง 12 คนนี้น่าจะโดดเด่นกว่าที่เหลือทั้งหมด นอกจากนี้ ความสมมาตรของการแปลงเป็นดิจิทัลยังขึ้นอยู่กับความกว้างของตัวเลขด้วย แน่นอนว่าเลข 10, 11 และ 12 จะกว้างกว่า 1, 2, 3 เป็นต้น สิ่งนี้จะต้องไม่ลืม

วิธีแก้ปัญหาและตัวเลือกในการหมุนหมายเลขเป็นดิจิทัล:

สำหรับ (var th = 1; th

มีคำถามหรือไม่?

รายงานการพิมพ์ผิด

ข้อความที่จะส่งถึงบรรณาธิการของเรา: