blog นี้จะกล่าวถึง Raspberry Pi Raspbian เป็นหลัก โดยจะอธิบายทั้งการใช้ windows และ Linux ในการเชื่อมต่อ วิธีอ่าน : ให้เริ่มอ่านตั้งแต่หัวข้อแรกๆขึ้นมา(ให้ดูที่ "คลังบทความ" ทางด้านขวามือ จะมี วัน-เวลา ไล่เรียงอยู่) ไม่งั้นอาจจะงงได้ สำหรับมือใหม่ หรือท่านใดที่ไม่เข้าใจ สามารถ mail มาถามกันได้ครับ ที่ kongimi1980@gmail.com หรือที่ line : 0814282425
วันพุธที่ 21 ธันวาคม พ.ศ. 2559
qt checkbox ตัวอย่าง
แล้วลาก checkbox ลงมา สามารถลากลงมาได้หลายอัน ตามต้องการ โดยวางให้อยู่ใน GroupBox
เวลาเขียน code ก็พิมพ์ตามนี้
if(ui->radioButton->ischeck())
{
QmessageBox::infomation(0,"message1","message2");
}
โดย message1 คือ title ที่อยู่ข้างบน bar
และ message2 คือ ข้อความที่ต้องการโชว์
ที่มา
https://www.youtube.com/watch?v=0XuxnBqGpWI
qt เปิด window ใหม่, เปิดหน้าต่างใหม่
1. คลิกขวาที่โปรเจค กด add new
ฝั่งซ้าย เลือก qt , ฝั่งขวาเลือก qt designer from class แล้วกด choose
แล้วตั้งชื่อหน้าต่างใหม่ตามต้องการ ในที่นี้ตั้งชื่อว่า SecDialog
จะมีหน้าต่างใหม่ขึ้นมา กด Diaglog without button กด next
2. ใน mainwindow.cpp ให้เพิ่ม #include "SecDialog.h"
3. ไปที่ mainwindow.h เพิ่ม #include "SecDialog.h"
4. mainwindow.h ตรง private: ให้เพิ่ม SecDialog *secdialog;
5. แล้วก็ไปที่ mianwindow.ui ให้คลิกขวาที่ปุ่มที่ต้องการให้เปิดหน้าต่างใหม่ เลือกไปที่ go to slot, click() แล้วพิมพ์ดังนี้
secdialog = new SecDialog(this);
secdialog-> show();
จบ
ที่มา https://www.youtube.com/watch?v=tP70B-pdTH0
qt วาดภาพ ตัวอย่าง
เราจึงต้องเขียน code เพื่อวาดภาพเอง
ทำดังนี้
1. ใน main.h ให้เพิ่ม code เข้าไปใน class
protected:
void paintEvent(QPaintEvent *e);
2. ใน mainwindow.cpp ให้เพิ่ม #include <QtGui>
และเพิ่มฟังก์ชัน
void mainwindow::paintEvent(QPaintEvent *e)
{
QPainter p;
p.begin(this);
p.drawrect(0,0,50,50);
หรืออยากวาดอะไรก็วาดไปได้เลย
}
ที่มา
https://www.youtube.com/watch?v=xXV3_mktCmY
วันอาทิตย์ที่ 18 ธันวาคม พ.ศ. 2559
qt sleep ตัวอย่าง
และตอนใช้ ก็ใช้แบบนี้
QThread::sleep(xx); โดย xx คือ ตัวเลข ในหน่วยวินาที
หรือ
QThread::msleep(xx); โดย xx คือ ตัวเลข ในหน่วยมิลลิวินาที 1,000 มิลลิวินาที = 1 วินาที
หรือ
QThread::usleep(xx); โดย xx คือ ตัวเลข ในหน่วยไมโครวินาที 1,000,000 มิลลิวินาที = 1 วินาที
วันพุธที่ 24 สิงหาคม พ.ศ. 2559
เปลี่ยน logo ตอน boot
ผมได้พยายามลองเปลี่ยนโลโก้ตอน boot ขึ้นมาใหม่ แต่ว่าทำได้แค่ใกล้เคียงที่อยากได้ มีขั้นตอนดังนี้
1. sudo apt-get install fbi
2. copy รูปภาพที่ต้องการให้โชว์ตอน boot ลงใน /etc แล้วตั้งชื่อว่า splash.png
3. สร้าง script ที่ /etc/init.d/asplashscreen ดังนี้
#! /bin/sh
### BEGIN INIT INFO
# Provides: asplashscreen
# Required-Start:
# Required-Stop:
# Should-Start:
# Default-Start: S
# Default-Stop:
# Short-Description: Show custom splashscreen
# Description: Show custom splashscreen
### END INIT INFO
do_start () {
/usr/bin/fbi -T 1 -noverbose -a /etc/splash.png
exit 0
}
case "$1" in
start|"")
do_start
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
# No-op
;;
status)
exit 0
;;
*)
echo "Usage: asplashscreen [start|stop]" >&2
exit 3
;;
esac
:
4. sudo chmod a+x /etc/init.d/asplashscreen (ทำให้ script สามารถใช้งานได้)
5. sudo insserv a+x /etc/init.d/asplashscreen
6. sudo nano /boot/cmdline.txt
6.1 เพิ่ม logo.nologo quiet เข้าไปข้างหลังสุด
7. sudo nano /etc/rc.local
7.1 เพิ่ม clear ก่อน exit 0
8. sudo reboot
ผลที่ได้คือ เราจะไม่เห็นลูก raspberry ตอนเริ่ม และจะเห็น logo ของเราในเวลาถัดมา
enjoy!!!
พฤ.18/02/2564
ผมได้มาทำใหม่ โดยทำตาม link ด้านล่างนี้ พบว่าได้ผลดี จึงนำมา share
https://www.thedigitalpictureframe.com/customize-your-raspberry-pi-splash-screen-raspbian-stretch-april-2019-version/
เริ่มต้นด้วยการ putty เข้าไป แล้วพิมพ์
fbset
จะได้หน้าตาคล้ายๆแบบนี้ออกมา
จะเห็นว่า ภาพที่เราจะใช้นั้น จะมีขนาด 480*800จากนั้นเราก็ไปทำรูปของเราให้มีขนาดดังกล่าว ด้วยวิธีการอะไรก็แล้วแต่ ตามสบายเลย
แต่จะต้องตั้งชื่อรูปนั้นว่า splash.png
แล้วก็ remote รูป splash.png ที่เราสร้างมา ไปไว้ที่ /home/pi
แล้วก็ใช้คำสั่ง
sudo cp /home/pi/splash.png /usr/share/plymouth/themes/pix/splash.png
เพื่อนำรูปไปวางในตำแหน่งที่จะใช้เป็น logo ตอน boot
จากนั้น
sudo nano /boot/cmdline.txtและเพิ่มนี่เข้าไปด้านท้าย
logo.nologo vt.global_cursor_default=0 และเปลี่ยนจาก console=tty1 ให้เป็น tty3
ctrl+o, enter, ctrl+x
sudo nano /boot/config.txt
เพิ่มนี่เข้าไปด้านล่างสุด
disable_splash=1
ctrl+o, enter, ctrl+x
sudo reboot
โชคดีครับ
วันจันทร์ที่ 11 กรกฎาคม พ.ศ. 2559
qt ตัวอย่างการส่ง serial port hex charactor, การรับค่า serial, การเปรียบเทียบ QByteArray กับ int
#include <QtSerialPort>
#include <QtSerialPort/QSerialPort>
void class::my_class()
{
serial->setPortName("COM9");
if (serial->isOpen()){
serial->close();
qDebug() << "serial close";
}
else{
qDebug() << "serial already close.";
}
if (serial->open(QIODevice::ReadWrite)) {
serial->setBaudRate(19200);
serial->setDataBits(QSerialPort::Data8);
serial->setParity(QSerialPort::EvenParity);
serial->setStopBits(QSerialPort::OneStop);
serial->setFlowControl(QSerialPort::NoFlowControl);
}
}
my_function()
{
char buff[16];
int hhh;
for(hhh=0;hhh<=15;hhh++)
{
buff[0] = hhh;
serial->write(buff,1);
}
}
my_function2()
{
QByteArray input;
char buff[16];
int hhh;
for(hhh=0;hhh<=15;hhh++)
{
buff[0] = hhh;
serial->write(buff,1);
serial->waitForBytesWritten(100);
serial->waitForReadyRead(100);
input = serial->readAll();
if (input == ""){
qDebug() << "status" << hhh << " = Lost.";
}else if( quint8(input[0]) == quint8(0x60+hhh)){
qDebug() << "status" << hhh << " = Hot.";
}
}
serial->flush();
}
วันศุกร์ที่ 29 เมษายน พ.ศ. 2559
RPI ป้องกัน sleep mode
1. sudo nano /etc/lightdm/lightdm.conf
2. ให้เพิ่มบรรทัดนี้เข้าไป
[SeatDefaults]
แต่ถ้ายังไม่ได้ผล ให้ใช้วิธีนี้ครับ
sudo apt-get install xscreensaver
แล้วไปที่เมนู preferences (ด้านล่างซ้ายมือ jessie) ==> Screensaver
แล้วไปเลือก disable screen saver
จอบอ
ที่มา
http://stackoverflow.com/questions/30985964/how-to-disable-sleeping-on-raspberry-pi





