วันอังคารที่ 13 กุมภาพันธ์ พ.ศ. 2561

ที่มาของค่า 3f, 6 ,5b, 4f, 66, 6d, 7d, 7, 7f, 6f ใน Arduino สำหรับป้อนให้ 74HC595 แสดงผล 7 Segment

ขอขยายความ ที่มาของค่า 0x3f, 0x06 , 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f ใน Code Arduino สำหรับป้อนให้ 74HC595 แสดงผล 7 Segment

เนื่องจากค่าที่ 74HC595 ต้องการนั้น เป็น Binary (ฐาน2) เราจึงต้องส่งค่าไปยัง 7 Segment ไปเป็น Binary เสมอ เมื่อเราดูโค๊ดตัวอย่างในเว็บต่างๆ จะเห็นเป็นค่า

int num[] = { 0x3f, 0x06 , 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f };

ตัวแปล num ได้เก็บค่าเป็น Array โดยเมื่อเอาค่าแต่ละค่ามาแปลงเป็นฐาน 2 จะพบว่าตรงกับการแสดงผลของ 7 Segment พอดี โดยหากเราต่อ 7 Segment ดังตัวอย่างด้านล่าง วิธีการมองเลขฐาน 2 ที่ส่งไปยัง 7 Segment นั้นให้มองจากด้านหลังมาด้านหน้าครับ จะยกตัวอย่างการแปลความมายดังนี้

ส่งค่า แสดงผลเป็นตัวเลข 1 บน 7 Segment

Hex = 6 ;
Binary = 110 ;
ตำแหน่ง a บน 7 Segment  = 0 ;
ตำแหน่ง b บน 7 Segment  = 1 ;
ตำแหน่ง c บน 7 Segment  = 1 ;
เมื่อได้ค่าดังนี้ 7 Segment จะแสดงผลเป็นเลข 1 ให้ครับ


                  a = Q0 (74hc595)
             _________________
            |                                  |
            |                                  |
            |                                  |
 f =Q5 |                                  |  b  =Q1
            |                                  |
            |          g = Q6             |
            _________________
            |                                  |
            |                                  |
e = Q4 |                                  |  c = Q2
            |                                  |
            |                                  |
            |                                  |
            _________________
                     d = Q3


วันพฤหัสบดีที่ 28 ธันวาคม พ.ศ. 2560

วิธีการติดตั้งไฟล์ bundle ใน Ubuntu

ปัญหาเกิดเมื่อต้องการติดตั้งไฟล์นามสกุล bundle

หาข้อมูลอย่างไว พบว่าต้องให้สิทธิ์ไฟล์ก่อน (Permission) แล้วจึงทำการแตกไฟล์

เช่น ชื่อไฟล์ VM64.bundle

เปิด Terminal ให้ Permission กับไฟล์

chmod a+x VM64.bundle

แตกไฟล์
sudo ./VM64.bundle

เป็นอันเรียบร้อย

วันอาทิตย์ที่ 10 ธันวาคม พ.ศ. 2560

POST ข้อมูลไม่มา มาไม่ครบ PHP POST LIMITED SIZE : max_input_vars , post_max_size

สืบเนื่องจาก PHP 7.0 ที่ผมใช้อยู่ เมื่อผมทำการ POST ค่ามาแบบ ARRAY และมีจำนวนตัวแปรและ array มีขนาดใหญ่พอสมควร พอ print_r($_POST); ดูข้อมูลมาแต่มาไม่ครบ ลองตรวจสอบหน้า Form ก็แสดงผล Input ต่างๆ ได้ถูกต้อง จึงได้ลองตรวจสอบ php.ini พบว่ามีการให้ค่า default ค่านึงเอาไว้แค่ 1000 ค่า นั่นก็คือ ตั้งค่าการส่งตัวแปล POST เอาไว้แค่ 1000 ตัวนั่นเอง ผมจึงลองแก้ไขดังนี้

nano /etc/php/7.0/apache2/php.ini

แล้วหาบรรทัดที่เขียนว่า  ;max_input_vars = 1000

ให้เอา ; ที่เป็นการคอมเม้นท์ออก แล้วแก้ จาก 1000 เป็นค่าที่ให้พอเหมาะกับจำนวนที่คุณคิดว่าจะส่งค่าตัวแปรผ่าน form มาแค่ไหน อาจจะเพิ่มมาอีกเท่าตัวเป็น 2000 ก็ตามแต่ความต้องการครับ

หลังแก้ php.ini  แล้วพบว่า print_r($_POST); ได้ข้อมูลครบถ้วนเลยทีเดียว
หากแก้แล้วยังมีปัญหาอยู่ให้ลองดูว่าได้กำหนด post_max_size ไว้เท่าไหร่แล้วลองปรับแก้ดูครับ

ส่วนเรื่องผลเสียนั้นส่วนตัวผมเอง ผมคิดว่าหากระบบที่กำลังพัฒนามีจำนวน User ที่เยอะมากๆ และการการเรียกใช้ Form ลักษณะนี้มาเช่นกัน การตั้งค่านี้ อาจจะกิน Memory ของ Server มากตามไปด้วยลองทดสอบและคำนวนดีๆ นะครับ ระบบจำได้ไม่ล่ม :-) โชคดีครับ....

วันจันทร์ที่ 4 ธันวาคม พ.ศ. 2560

ซ่อม Power Bank (เสียอย่าพึ่งทิ้ง)

          Power bank บางตัวบางรุ่นยางยี่ห้อ เมื่อผลิตออกมาแล้วบางตัวผลิตมาดีบางตัวมีปัญหาคละกันไปแล้วแต่ผู้ใช้จะเจอ ผมก็เจอปัญหาเหมือนกัน ซื้อมาได้ 2 สัปดาห์ เสีย !! ชาร์ตไม่เข้า พอลองแกะมาตรวจสอบพบว่าแผงวงจรชาร์ตมีชิปตัวนึงไหม้ อาจจะเกิดจากตัวหัวชาร์ตปล่อยไฟออกมาเยอะเกินไปหรือตอนผลิตอุปกรณ์ไม่ได้มาตรฐาน ผมจึงได้สั่งอุปกรณ์จาก ebay มาลองแก้ปัญหานี้ดู พบว่า Power bank ผมกลับมาใช้งานได้ตามปกติ แค่ซื้ออุปกรณ์ตัวเล็กๆ มา 1 ตัวราคาไม่ถึง 50 บาท เท่านั้น

           หาก Power bank ของคุณๆ พึ่งซื้อมาและคิดว่า Batt ไม่เสื่อม น่าจะลองซื้อมาใช้ดูครับมีให้เลือกหลายแบบใน Ebay ครับ

วันจันทร์ที่ 30 ตุลาคม พ.ศ. 2560

สร้าง USB Boot Windows7 / Windows 10

สร้าง USB Boot Windows7 / Windows 10

เตรียม USB Bootable
ด้วย Windows 7 / Windows 10 เข้า Command Line ด้วย Administrator

diskpart
listdisk
select disk 1 (ตรงตัวเลข1 ให้ดูจากคำสั่งข้างบนว่า List Disk ออกมาแล้วเป็นลำดับที่เท่าไหร่)
clean
create partition primary
select partition 1
active
format fs=NTFS quick
assign

จบขั้นตอนการเตรียม USB
มาถึงขั้นตอนการทำเป็น Bootable
ให้เข้าไปที่ DVD หรือ ISO ที่เรา Mount ไว้ว่าเป็น Drive อะไร

cd boot
 สั่ง
bootsect.exe /NT60 K: (K: คือ Drive ที่เราเตรียมไว้ตอนต้น)
แล้ว Copy ไฟล์ใน DVD ทั้งหมดลงใน Drive K: (USB ที่เตีรยมไว้)

วันเสาร์ที่ 23 กันยายน พ.ศ. 2560

phpMailer แสดงภาษาไทยไม่ถูกต้อง ภาษาต่างด้าว อ่านไม่ออก

เรื่องปัญหาการส่ง e-mail สำหรับมือใหม่อย่างผม ยังเจอกันอยู่บ่อยๆ ส่งไปยัง gmail hotmail อ่านได้ปกติ แต่พอส่งเข้า MS-OUTLOOK มีปัญหาตลอด

ต้องตรวจสอบเบื้องต้นแบบนี้ครับ

- ตรวจสอบว่าไฟล์ php ของเราเป็น utf-8 หรือยัง

- ตรวจสอบข้อมูลที่เราเอามาแสดงว่าเป็นการเข้ารหัสแบบใด แปลงให้เป็น utf-8 ครับโดยใช้ iconv

- subject กำหนดให้เป็นดังนี้
  $mail->Subject = "=?utf-8?b?".base64_encode('ทดสอบหัวข้อเป็นภาษาไทย')."?=";

- ส่วนของเนื้อหาหากปรับเป็น utf-8 หมดแล้วไม่หายลองเข้าไปดูไฟล์ class.phpmailer.php โดยให้แก้จาก public $Encoding = '8bit'; ไปเป็น public $Encoding = 'base64'; ผมแก้ตามนี้แล้วหายครับ

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

MariaDB ติดตั้ง Ubuntu 17.04

ปัญหาเกิดเมื่อติดตั้ง MariaDB แบบ Command line แล้ว ไม่มีให้ใส่รหัสผ่าน
เมื่อติดตั้ง phpmyadmin แล้วดันไม่ยอมให้รหัสว่างอีกแก้โดย

เปิด Terminal
#sudo mysql -uroot
แล้วเพิ่ม User ใหม่ซะเลยให้เข้าไป Graphic Mode ก่อนค่อยไปใส่ Password ให้ root ครับ

mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'newpassword';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost'
    ->     WITH GRANT OPTION;
mysql> CREATE USER 'newuser'@'%' IDENTIFIED BY 'newpassword';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'%'
    ->     WITH GRANT OPTION;

เท่านี้ก็รอดแล้วครับ   :-)

แก้ Active Desktop Recovery

เข้าไปแก้ Value ในไฟล์ DeskHtmlVersion  ให้กลายเป็น 0 ไม่ให้แสดงหน้าต่าง Active Desktop Recovery เข้าไปที่  HKEY_CURRENT_USER/Software/Mi...