모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 게시물ID : programmer_23405
    작성자 : 싱그러운햇살
    추천 : 1
    조회수 : 1710
    IP : 14.36.***.109
    댓글 : 3개
    등록시간 : 2023/06/15 22:39:49
    http://todayhumor.com/?programmer_23405 모바일
    라즈베리파이, 스위치 하나 누르면 다른 스위치들도 반응해요
    <p>스위치를 누르면 눌린 스위치 정보가 컴퓨터 서버로 메세지가 오게 되어 있는데요</p> <p>스위치 하나 누르면 여러개 스위치에서 신호를 보냅니다..</p> <p>눌린 스위치에서만 동작을 해야하는데</p> <p>왜 여러 스위치에서 신호를 보내는 걸까요...?</p> <p> </p> <p> </p> <p> </p> <p> </p> <div style="color:#cccccc;background-color:#1f1f1f;font-family:Consolas, 'Courier New', monospace;font-size:14px;line-height:19px;white-space:pre;"> <div> <span style="color:#c586c0;">from</span> pythonosc.osc_server <span style="color:#c586c0;">import</span> AsyncIOOSCUDPServer </div> <div> <span style="color:#c586c0;">from</span> pythonosc.udp_client <span style="color:#c586c0;">import</span> SimpleUDPClient </div> <div> <span style="color:#c586c0;">from</span> pythonosc.dispatcher <span style="color:#c586c0;">import</span> Dispatcher </div> <div> <span style="color:#c586c0;">import</span> RPi.GPIO <span style="color:#c586c0;">as</span> GPIO </div> <div> <span style="color:#c586c0;">import</span> datetime </div> <div> <span style="color:#c586c0;">import</span> asyncio </div> <div> <span style="color:#6a9955;"># import orjson</span> </div> <div> <span style="color:#c586c0;">import</span> time </div> <br><div>SWITCHES <span style="color:#d4d4d4;">=</span> [<span style="color:#b5cea8;">13</span>, <span style="color:#b5cea8;">19</span>, <span style="color:#b5cea8;">29</span>, <span style="color:#b5cea8;">33</span>, <span style="color:#b5cea8;">40</span>]</div> <div>RELAY <span style="color:#d4d4d4;">=</span> [<span style="color:#b5cea8;">11</span>, <span style="color:#b5cea8;">12</span>, <span style="color:#b5cea8;">15</span>, <span style="color:#b5cea8;">16</span>]</div> <div>STATUS <span style="color:#d4d4d4;">=</span> {<span style="color:#ce9178;">'s0'</span>: <span style="color:#b5cea8;">0</span>, <span style="color:#ce9178;">'s1'</span>: <span style="color:#b5cea8;">0</span>, <span style="color:#ce9178;">'s2'</span>: <span style="color:#b5cea8;">0</span>, <span style="color:#ce9178;">'s3'</span>: <span style="color:#b5cea8;">0</span>, <span style="color:#ce9178;">'s4'</span>: <span style="color:#b5cea8;">0</span>, <span style="color:#ce9178;">'r0'</span>: <span style="color:#b5cea8;">0</span>, <span style="color:#ce9178;">'r1'</span>: <span style="color:#b5cea8;">0</span>, <span style="color:#ce9178;">'r2'</span>: <span style="color:#b5cea8;">0</span>, <span style="color:#ce9178;">'r3'</span>: <span style="color:#b5cea8;">0</span>}</div> <div> <span style="color:#6a9955;"># STATUS_LIST = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] # s0-4, r0-3</span> </div> <div>SERVER_IP <span style="color:#d4d4d4;">=</span><span style="color:#ce9178;">'192.168.1.101'</span></div> <div>SERVER_PORT <span style="color:#d4d4d4;">=</span><span style="color:#b5cea8;">1234</span></div> <div>client <span style="color:#d4d4d4;">=</span> SimpleUDPClient(SERVER_IP, SERVER_PORT)</div> <br><br><div> <span style="color:#569cd6;">def</span><span style="color:#dcdcaa;">relay_handler</span>(<span style="color:#9cdcfe;">addr</span>, <span style="color:#9cdcfe;">args</span>): </div> <div>    <span style="color:#dcdcaa;">print</span>(<span style="color:#569cd6;">f</span><span style="color:#ce9178;">"</span><span style="color:#569cd6;">{</span>addr<span style="color:#569cd6;">}</span><span style="color:#ce9178;">, </span><span style="color:#569cd6;">{</span>args<span style="color:#569cd6;">}</span><span style="color:#ce9178;">"</span>)</div> <div>    relay(args)</div> <div>    <span style="color:#dcdcaa;">print</span>(STATUS)</div> <div>    client.send_message(<span style="color:#ce9178;">'/switch'</span>, <span style="color:#4ec9b0;">list</span>(STATUS.values()))</div> <div>    <span style="color:#c586c0;">return</span></div> <br><div> <span style="color:#569cd6;">def</span><span style="color:#dcdcaa;">default_handler</span>(<span style="color:#9cdcfe;">addr</span>, <span style="color:#d4d4d4;">*</span><span style="color:#9cdcfe;">args</span>): </div> <div>    <span style="color:#dcdcaa;">print</span>(<span style="color:#569cd6;">f</span><span style="color:#ce9178;">"</span><span style="color:#569cd6;">{</span>addr<span style="color:#569cd6;">}</span><span style="color:#ce9178;">, </span><span style="color:#569cd6;">{</span>args<span style="color:#569cd6;">}</span><span style="color:#ce9178;">"</span>)</div> <div>    <span style="color:#c586c0;">return</span></div> <br><div> <span style="color:#569cd6;">def</span><span style="color:#dcdcaa;">toggle</span>(<span style="color:#9cdcfe;">channel</span>): </div> <div>    <span style="color:#c586c0;">if</span> GPIO.input(channel) <span style="color:#d4d4d4;">==</span> GPIO.HIGH:</div> <div>        STATUS[<span style="color:#569cd6;">f</span><span style="color:#ce9178;">'s</span><span style="color:#569cd6;">{</span>SWITCHES.index(channel)<span style="color:#569cd6;">}</span><span style="color:#ce9178;">'</span>] <span style="color:#d4d4d4;">=</span><span style="color:#b5cea8;">0</span></div> <div>        <span style="color:#6a9955;"># STATUS_LIST[SWITCHES.index(channel)] = 0</span></div> <div>    <span style="color:#c586c0;">else</span>:</div> <div>        STATUS[<span style="color:#569cd6;">f</span><span style="color:#ce9178;">'s</span><span style="color:#569cd6;">{</span>SWITCHES.index(channel)<span style="color:#569cd6;">}</span><span style="color:#ce9178;">'</span>] <span style="color:#d4d4d4;">=</span><span style="color:#b5cea8;">1</span></div> <div>        <span style="color:#6a9955;"># STATUS_LIST[SWITCHES.index(channel)] = 1</span></div> <div>    <span style="color:#dcdcaa;">print</span>(STATUS)</div> <div>    <span style="color:#6a9955;"># client.send_message('/switch', STATUS)</span></div> <div>    client.send_message(<span style="color:#ce9178;">'/switch'</span>, <span style="color:#4ec9b0;">list</span>(STATUS.values()))</div> <div>    <span style="color:#c586c0;">return</span></div> <br><div> <span style="color:#569cd6;">def</span><span style="color:#dcdcaa;">initialize</span>(): </div> <div>    GPIO.setmode(GPIO.BOARD)</div> <div>    GPIO.setup(SWITCHES, GPIO.IN, <span style="color:#9cdcfe;">pull_up_down</span><span style="color:#d4d4d4;">=</span>GPIO.PUD_UP)</div> <br><div>    GPIO.setup(RELAY, GPIO.OUT)</div> <div>    GPIO.output(RELAY, GPIO.HIGH) <span style="color:#6a9955;"># turn it off</span></div> <div>    <span style="color:#c586c0;">for</span> SWITCH <span style="color:#c586c0;">in</span> SWITCHES:</div> <div>        GPIO.add_event_detect(SWITCH, GPIO.RISING, <span style="color:#9cdcfe;">callback</span><span style="color:#d4d4d4;">=</span>toggle, <span style="color:#9cdcfe;">bouncetime</span><span style="color:#d4d4d4;">=</span><span style="color:#b5cea8;">200</span>)</div> <div>   </div> <div>    <span style="color:#c586c0;">return</span></div> <br><div> <span style="color:#569cd6;">def</span><span style="color:#dcdcaa;">relay</span>(<span style="color:#9cdcfe;">args</span>): </div> <div>    <span style="color:#c586c0;">try</span>:</div> <div>        index, action <span style="color:#d4d4d4;">=</span> args.split(<span style="color:#ce9178;">'_'</span>)</div> <div>    <span style="color:#c586c0;">except</span>:</div> <div>        <span style="color:#dcdcaa;">print</span>(<span style="color:#ce9178;">'WRONG MESSAGE'</span>)</div> <div>        <span style="color:#c586c0;">return</span></div> <div>    index <span style="color:#d4d4d4;">=</span><span style="color:#4ec9b0;">int</span>(index[<span style="color:#d4d4d4;">-</span><span style="color:#b5cea8;">1</span>])</div> <div>    <span style="color:#c586c0;">if</span><span style="color:#569cd6;">f</span><span style="color:#ce9178;">'r</span><span style="color:#569cd6;">{</span>index<span style="color:#569cd6;">}</span><span style="color:#ce9178;">'</span><span style="color:#569cd6;">in</span> STATUS:</div> <div>        <span style="color:#c586c0;">if</span> action <span style="color:#d4d4d4;">==</span><span style="color:#ce9178;">'0'</span>:</div> <div>            STATUS[<span style="color:#569cd6;">f</span><span style="color:#ce9178;">'r</span><span style="color:#569cd6;">{</span>index<span style="color:#569cd6;">}</span><span style="color:#ce9178;">'</span>] <span style="color:#d4d4d4;">=</span><span style="color:#b5cea8;">0</span></div> <div>            <span style="color:#6a9955;"># STATUS_LIST[SWITCHES.index(f'r{index}')] = 0</span></div> <div>            GPIO.output(RELAY[index], GPIO.HIGH)</div> <div>        <span style="color:#c586c0;">elif</span> action <span style="color:#d4d4d4;">==</span><span style="color:#ce9178;">'1'</span>:</div> <div>            STATUS[<span style="color:#569cd6;">f</span><span style="color:#ce9178;">'r</span><span style="color:#569cd6;">{</span>index<span style="color:#569cd6;">}</span><span style="color:#ce9178;">'</span>] <span style="color:#d4d4d4;">=</span><span style="color:#b5cea8;">1</span></div> <div>            <span style="color:#6a9955;"># STATUS_LIST[SWITCHES.index(f'r{index}')] = 1</span></div> <div>            GPIO.output(RELAY[index], GPIO.LOW)</div> <div>        <span style="color:#c586c0;">else</span>:</div> <div>            <span style="color:#c586c0;">pass</span></div> <div>    <span style="color:#c586c0;">return</span></div> <br><br><div> <span style="color:#569cd6;">async</span><span style="color:#569cd6;">def</span><span style="color:#dcdcaa;">loop</span>(): </div> <div>    <span style="color:#6a9955;">"""Example main loop that only runs for 10 iterations before finishing"""</span></div> <div>    <span style="color:#c586c0;">while</span><span style="color:#569cd6;">True</span>:</div> <div>        <span style="color:#c586c0;">await</span> asyncio.sleep(<span style="color:#b5cea8;">0</span>)</div> <br><div> <span style="color:#569cd6;">async</span><span style="color:#569cd6;">def</span><span style="color:#dcdcaa;">init_main</span>(): </div> <div>    <span style="color:#c586c0;">try</span>:</div> <div>        <span style="color:#dcdcaa;">print</span>(<span style="color:#ce9178;">'Start Switch'</span>)</div> <div>        initialize()</div> <div>        dispatcher <span style="color:#d4d4d4;">=</span> Dispatcher()</div> <div>        dispatcher.map(<span style="color:#ce9178;">'/relay'</span>, relay_handler)</div> <div>        dispatcher.set_default_handler(default_handler)</div> <div>        server <span style="color:#d4d4d4;">=</span> AsyncIOOSCUDPServer((<span style="color:#ce9178;">'0.0.0.0'</span>, <span style="color:#b5cea8;">1337</span>), dispatcher, asyncio.get_event_loop())</div> <br><div>        transport, protocol <span style="color:#d4d4d4;">=</span><span style="color:#c586c0;">await</span> server.create_serve_endpoint()  <span style="color:#6a9955;"># Create datagram endpoint and start serving</span></div> <div>        <span style="color:#c586c0;">await</span> loop()  <span style="color:#6a9955;"># Enter main loop of program</span></div> <div>    <span style="color:#c586c0;">finally</span>:</div> <div>        GPIO.cleanup()</div> <div>        <span style="color:#dcdcaa;">print</span>(<span style="color:#ce9178;">'Finishing'</span>)</div> <div>        transport.close()  <span style="color:#6a9955;"># Clean up serve endpoint</span></div> <br><br><br><div>asyncio.run(init_main())</div> </div> <p> </p> <p> </p> <p> </p> <p> <img src="http://thimg.todayhumor.co.kr/upfile/202306/168683637549ad7c09373e45f9abe2f2568f742288__mn806048__w800__h1008__f74685__Ym202306.png" alt="11.PNG" style="width:800px;height:1008px;" filesize="74685"></p> <p> <img src="http://thimg.todayhumor.co.kr/upfile/202306/16868363759594113c1b3348ceb0b044b7229a7c27__mn806048__w800__h1003__f61540__Ym202306.png" alt="111.PNG" style="width:800px;height:1003px;" filesize="61540"></p>

    이 게시물을 추천한 분들의 목록입니다.
    [1] 2023/06/16 00:19:17  61.105.***.73  NeoGenius  149436
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    23438
    아후 서터레스 NeoGenius 24/04/02 17:52 464 1
    23436
    로또 [3] 까망사투리 24/03/11 15:53 935 4
    23434
    copilot 기업유료버전 intelliJ에 붙여서 쓰고있는데 지리네요 안녕월드 24/02/22 00:15 969 0
    23433
    코딩마을 대나무숲 [5] cocoa 24/02/20 14:50 1106 5
    23432
    (질문) 프로그래머분들은 싱글PC게임 레벨제한 풀수 있죠?? [22] 본인삭제금지 할배궁디Lv2 24/02/13 13:36 1179 1
    23431
    Freemium NeoGenius 24/02/13 13:23 780 0
    23429
    부산에서 프로그래머 구인하는데 연봉 6천에서 8천 작은건가 [3] 폴팡 24/02/04 20:50 1362 1
    23427
    chatgpt? bard? [4] 별빛러브 24/01/25 06:24 888 0
    23426
    Next.js로 만들어봤어요~ [3] 창작글 sonnim 24/01/24 12:52 1057 3
    23425
    Spring Boot 공부하기 - 한국투자증권 오픈API 호출 옐로우황 24/01/21 17:51 968 1
    23424
    파이썬 코딩 관련해서 질문드립니다. [4] 투투나 24/01/08 09:49 1182 0
    23423
    9년차 개발자의 "나만의 챗봇" 만들기 with ChatGPT [2] 아자뵤옹 23/12/10 22:35 1379 4
    23420
    이 에러가 뭘까요? [2] +.푸른바다.+ 23/11/03 15:25 1542 1
    23419
    [유니티 코리아] MWU 2023 투표하고 푸짐한 경품 받아가세요! engine1 23/10/06 18:52 1153 0
    23418
    Flutter로 만든 채팅 어플리케이션 with ChatGPT 아자뵤옹 23/09/13 22:39 1633 0
    23417
    특정 페이지 직접 접근 어떻게 막으시나요? [9] 달콤아시타 23/09/10 09:36 1669 0
    23416
    버츄얼 유튜버가 완성한 '세계 최초' 애플 실리콘 GPU 드라이버 펌글 우가가 23/09/02 23:52 1791 2
    23415
    뜨끈뜨끈한 30분짜리 삽질 [9] 창작글 상사꽃 23/08/29 16:00 2050 1
    23414
    [유니티 코리아] MWU 코리아 어워드 2023 마감 임박! mwuaward2023 23/08/26 14:01 1256 0
    23413
    [유니티 코리아] MWU 코리아 어워드 2023 mwuaward2023 23/08/13 19:52 1289 0
    23412
    React.js 공부하기 - REST API 호출(CRUD) 옐로우황 23/08/05 13:13 1505 0
    23411
    영어앱을 만들었는데, 사용자들의 의견 받고 싶습니다! [2] 맑은바다13 23/08/03 18:28 1480 2
    23410
    진짜 절박해서 정말 ㅠㅠ 첫끼간절해서 도움주실분ㅠ.. [3] 명금123 23/07/17 22:28 1574 0
    23409
    [유니티 코리아] MWU 코리아 어워드 2023 mwuaward2023 23/07/04 16:49 1389 0
    23407
    라즈베리파이 파이썬코드에 while문 썼는데 동작을 안해요 [3] 싱그러운햇살 23/06/17 17:18 1675 1
    라즈베리파이, 스위치 하나 누르면 다른 스위치들도 반응해요 [3] 싱그러운햇살 23/06/15 22:39 1711 1
    23403
    혹시.. 중소기업 재취업 목표.. 공부방법 및 툴 버전 질문드려도 될까요 [2] 베스트금지베오베금지외부펌금지 웃대메템 23/06/13 01:46 1753 0
    23402
    재취업 힘들까요???? [5] 베스트금지베오베금지외부펌금지 웃대메템 23/06/11 00:46 2092 2
    23401
    취미로 만든 채팅 with ChatGpt [4] 아자뵤옹 23/05/11 20:10 2110 4
    23400
    Spring Boot 공부하며 예제 CRUD 웹애플리케이션 정리 옐로우황 23/05/06 11:26 1779 2
    [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [다음10개▶]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈