공공데이터포털에서
https://www.data.go.kr/index.do
보건복지부_코로나19 시도 발생현황 승인받아서 주소를 가져오기
그리고
코로나 현황받아오기
<지역별 코로나 확진자 수 출력하기>
<오늘 날짜를 자동으로 입력하여 전국의 코로나 확진자수 출력하기>
현재는 이런식으로만 제공하고 있기 때문에..ㅠ
<색상검출해서 아두이노에 LED 표시하기>
- OpenCV를 이용해서 색상 추출하기
더보기
import cv2
def main():
camera = cv2.VideoCapture(0)
camera.set(3,320)
camera.set(4,240)
while True:
frame = cv2.imread('green.png')
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_blue = (100,100,120)
upper_blue = (150,255,255)
lower_green = (50,150,50)
upper_green = (80,255,255)
lower_red = (150,50,50)
upper_red = (180,255,255)
redMask = cv2.inRange(hsv, lower_red, upper_red)
greenMask = cv2.inRange(hsv,lower_green, upper_green)
blueMask = cv2.inRange(hsv, lower_blue, upper_blue)
red = cv2.bitwise_and(frame, frame, mask=redMask)
green = cv2.bitwise_and(frame, frame, mask=greenMask)
blue = cv2.bitwise_and(frame, frame, mask=blueMask)
cv2.imshow('frame', frame)
cv2.imshow('red', red)
cv2.imshow('Green', green)
cv2.imshow('Blue', blue)
if cv2.waitKey(1) == ord('q'):
break
cv2.destroyAllwindows()
if __name__ == '__main__':
main()
-색상 값 수치화하기
- 색상별 가장 큰 값을 찾고 값의 임계점 이상 넘어갔을 때 색상을 판별하고 LED 색상에 맞게에 전송하기
더보기
import cv2
import time
import serial
import serial.tools.list_ports
def send_rgb_led(red,green,blue):
sendData = f"RGB={red}, {green}, {blue}\n"
my_serial.write(sendData.encode())
def main():
camera = cv2.VideoCapture(0)
camera.set(3,320)
camera.set(4,240)
while True:
frame = cv2.imread('green.png')
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_blue = (100,100,120)
upper_blue = (150,255,255)
lower_green = (50,150,50)
upper_green = (80,255,255)
lower_red = (150,50,50)
upper_red = (180,255,255)
redMask = cv2.inRange(hsv, lower_red, upper_red)
greenMask = cv2.inRange(hsv,lower_green, upper_green)
blueMask = cv2.inRange(hsv, lower_blue, upper_blue)
redPixels = cv2.countNonZero(redMask)
greenPixels = cv2.countNonZero(greenMask)
bluePixels = cv2.countNonZero(blueMask)
colorList = [redPixels,greenPixels,bluePixels]
maxValue = max(colorList)
maxPos = colorList.index(maxValue)
if maxValue >= 500:
if maxPos == 0: #red
print("red")
send_rgb_led(255,0,0)
elif maxPos == 1: #green
print("green")
send_rgb_led(0,255,0)
elif maxPos == 2: #blue
print("blue")
send_rgb_led(0,0,255)
else:
pass
cv2.imshow('frame', frame)
if cv2.waitKey(1) == ord('q'):
break
cv2.destroyAllWindows()
if __name__ == '__main__':
ports = list(serial.tools.list_ports.comports())
for p in ports:
if 'USB' in p.description:
print(f"{p}포트에 연결하였습니다.")
my_serial = serial.Serial(p.device, baudrate=9600, timeout=1.0)
time.sleep(2.0)
main()
my_serial.close()
<파이썬으로 가변 저항 값을 요청하여 실시간 그래프 그리기>
- 실시간 그래프 그리기
- 가변 저항 값을 받는대로 실시간 그래프 그리기
더보기
from matplotlib import pyplot as plt
from matplotlib import animation
import numpy as np
import time
import serial
import serial.tools.list_ports
import threading
serial_receive_data = ""
def serial_read_thread():
global serial_receive_data
while True:
read_data = my_serial.readline()
serial_receive_data = read_data.decode()
def send_vr():
sendData = f"VR=?\n"
my_serial.write(sendData.encode())
def init():
return line,
def animate(i):
send_vr()
global serial_receive_data
if "VR=" in serial_receive_data:
print("가변 저항 값:", serial_receive_data[3:])
y = int(serial_receive_data[3:])
serial_receive_data = ""
y = float(y)
old_y = line.get_ydata()
new_y = np.r_[old_y[1:], y]
line.set_ydata(new_y)
return line,
else:
pass
if __name__ == '__main__':
ports = list(serial.tools.list_ports.comports())
for p in ports:
if 'USB' in p.description:
print(f"{p}포트에 연결하였습니다.")
my_serial = serial.Serial(p.device, baudrate=9600, timeout=1.0)
time.sleep(2.0)
t1 = threading.Thread(target=serial_read_thread)
t1.daemon = True
t1.start()
max_x_points = 200
fig = plt.figure()
ax = plt.axes(xlim=(0, max_x_points), ylim=(0,1023))
line, = ax.plot(np.arange(max_x_points), np.ones(max_x_points, dtype=np.float)*np.nan, lw=2)
anim = animation.FuncAnimation(fig, animate, init_func=init, frames=200, interval=20, blit=False)
plt.show()
my_serial.close()
'아두이노' 카테고리의 다른 글
아두이노 밝기값 스마트폰 알람 / 센서값 엑셀 저장 / GUI만들어서 서보모터/음성인식 (0) | 2023.08.02 |
---|---|
파이썬 이용해 미세먼지와 측정소 출력 (0) | 2023.08.01 |
파이썬으로 환율/기상청 날씨 아두이노 LCD에 표시하기 (0) | 2023.08.01 |
파이썬으로 아두이노 가변저항, 조도센서, 온습도센서 제어하기 (0) | 2023.07.31 |
파이썬으로 아두이노 서보모터, 피에조부저, FND 제어 (0) | 2023.07.31 |