หน้าเว็บ

วันพุธที่ 5 กันยายน พ.ศ. 2561

micro:bit with TM1637 4 digit 7 Segment

ไอซี TM1637 ของบริษัท Titan micro electronics ออกแบบมาเพื่อควบคุมการแสดงผล 7 Segment แบบคอมมอนอาโนดได้สูงสุด 6 หลัก  โดยใช้ขาควบคุมเพียง 2 เส้นคือ DIO (ขาข้อมูล)  และ CLK (สัญญาณนาฬิกา) และยังสามารถปรับความสว่างของ 7 Segment ได้  นอกจากนี้ไอซีตัวนี้ยังสามารถต่อสวิตช์ร่วมได้อีก 16 ตัว

การเชื่อมต่อกับ micro:bit ผ่านบอร์ด PLAY:BIT ทำได้ง่าย ๆ กับสายเพียง 4 เส้นดังรูป


ในรูปต่อ
ขา 13 ==>  CLK
ขา 14 ==>  DIO
ขา VCC ==> +
ขา GND ==> -









สำหรับการเขียนโค้ด ด้วย micro:bit เพื่อให้ง่าย สามารถใช้ Package ที่มีผู้ทำอยู่แล้วมาใช้งานได้  ตามลิงก์นี้
https://github.com/zhuning239/TM1637


โดยกดเลือกที่คำสั่ง Add Package







จากนั้นวางลิงก์  https://github.com/zhuning239/TM1637  ลงในช่อง URL และกดเพื่อค้นหา




จะพบ TM1637 ให้กดเลือก





หน้าจอจะพบกลุ่มคำสั่ง ของ TM1637 ปรากฎขึ้นมา




มาดูตัวอย่างการเขียนโปรแกรมอย่างง่าย ๆ กันครับ





จากตัวอย่างเป็นการกำหนดให้ TM1637 เชื่อมต่อกับขา 13 และ 14 ของ micro:bit และจำนวน 7 Segment มี 4 หลัก จากนั้นวนลูปเพื่อนับค่าตัวเลขขึ้นไปเรื่อยๆ ทุก ๆ 1 วินาที โดยทุกครึ่งวินาที แสดงการติดดับของ LED ตำแหน่งตรงกลางด้วย
 โดยคำสั่งสำคัญประกอบด้วย


การสร้างออบเจ็กต์สำหรับ TM1637 



โดย
  • clk,  เป็นขาพอร์ตขาใดก็ได้
  • dio,  เป็นขาพอร์ตขาใดก็ได้
  • intensity, กำหนดค่าความสว่างของจอมีค่าตั้งแต่ [0-8]
  • count, คือจำนวน 7 Segment มีค่า [1-5]



เปิดการแสดงผล 7 Segment



ปิดการแสดงผล 7 Segment




เคลียร์ค่าข้อมูลการแสดงผล





แสดงตัวเลขในตำแหน่งที่ระบุ





แสดงค่าตัวเลขจำนวนเต็ม





แสดงค่าตัวเลขฐานสิบหก





แสดงจุด (จากการทดสอบแสดงได้แค่จุดกึ่งกลาง : เท่านั้น )





กำหนดค่าความสว่างหน้าจอ








วันอังคารที่ 4 กันยายน พ.ศ. 2561

Running 20 LED on Arduino

แนวคิดง่าย ๆ กับการเขียนโปรแกรม Arduino ทำไฟวิ่งจนครบขาทั้งหมด 20 ขา



ลิงก์ของ ThinkerCad ตามนี้

http://bit.ly/2oDYpmr

ส่วนโปรแกรมก็ตามนี้


ซึ่งหัวใจคือการประกาศตำแหน่งขาต่างๆ ซึ่งไม่เรียงต่อกัน ผ่าน Array

Arduino Uno with 74HC595


วันนี้มีคำถาม สอบถามเรื่องการต่อ Arduino กับ 74HC595 ไหน ๆ ก็ตอบคำถามแล้ว เอารายละเอียดที่ทำไว้มาบันทึกลง บล็อกไว้เลยดีกว่า ทั้ง ส่วนของการต่อวงจร และลิงก์สำหรับการทดสอบการทำงานผ่าน 123D Circuit (ปัจจุบันไปรวมตัวอยู่กับ ThikerCad แล้ว) ลิงก์สมบูรณ์ตามนี้เลย
ทั้งวงจรและการจำลองการทำงาน
http://bit.ly/2NLNj9P
สำหรับโค้ด



วันศุกร์ที่ 31 สิงหาคม พ.ศ. 2561

#pragma once

วันนี้ไปเจอส่วนหัวของโปรแกรม มีคำสั่งนี้มาก่อนเลย

#pragma once
ก็เลยไปหาข้อมูลและขอเก็บบันทึกไว้กันลืม

File "grandparent.h"
#pragma once

struct foo 
{
    int member;
};
File "parent.h"
#include "grandparent.h"
File "child.c"
#include "grandparent.h"
#include "parent.h"


จากตัวอย่างไฟล์ child.c เรียกใช้ parent.h และ grandparent.h  แต่ parent.h มีการเรียกใช้ grandparent.h อยู่แล้ว ภาษา C จะแจ้ง error เพราะว่าเป็นเรียกไลบรารี่ซ้ำ ดังนั้น ปกติ เมื่อเขียนไลบรารี่จะต้องมีการกำหนด คำสั่งเป็น

#ifndef GRANDPARENT_H
#define GRANDPARENT_H
... contents of grandparent.h
#endif 

ซึ่งใช้ #ifdef เพื่อตรวจสอบว่า มีการเรียกใช้ grandpatent.h แล้วหรือยัง ถ้ายังก็อนุญาตให้เรียกใช้  ทั้ง 3 คำสั่งนี้สามารถแทนด้วย #pragma once เพียงคำสั่งเดียว 
หมายเหตุ ต้องดูคอมไพเลอร์แต่ละตัวด้วยว่ารองรับหรือไม่ ที่แน่ๆ ใช้ได้กับ arduino ครับ