BASIC4MCU | 질문게시판 | 답변 : 네오픽셀과 서보모터
페이지 정보
작성자 master 작성일2018-12-12 09:00 조회4,772회 댓글2건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6750
작성일
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-12 오전 9:02:41// by Ok-Hyun Park//strip.setPixelColor(0,strip.Color(0,50,255));strip.setPixelColor(1,strip.Color(0,100,255));strip.setPixelColor(2,strip.Color(0,150,255));strip.setPixelColor(3,strip.Color(0,200,255));strip.setPixelColor(4,strip.Color(0,255,255));strip.setPixelColor(5,strip.Color(0,255,255));strip.setPixelColor(6,strip.Color(0,255,255));strip.setPixelColor(7,strip.Color(0,255,255)); //초록strip.setPixelColor(8,strip.Color(255,255,0)); //노랑strip.show(); delay(10);for(int i=0; i<=255; i+=1){strip.setPixelColor(0,strip.Color(0,50,255));strip.setPixelColor(1,strip.Color(0,100,255));strip.setPixelColor(2,strip.Color(0,150,255));strip.setPixelColor(3,strip.Color(0,200,255));strip.setPixelColor(4,strip.Color(0,255,255));strip.setPixelColor(5,strip.Color(i,255-i,255-i));strip.setPixelColor(6,strip.Color(i,255,255-i));strip.setPixelColor(7,strip.Color(0,255,255)); //초록strip.setPixelColor(8,strip.Color(255,255,0)); //노랑strip.show(); delay(10);}//for(int i=255; i>=0; i-=1){strip.setPixelColor(0,strip.Color(0,50,255));strip.setPixelColor(1,strip.Color(0,100,255));strip.setPixelColor(2,strip.Color(0,150,255));strip.setPixelColor(3,strip.Color(0,200,255));strip.setPixelColor(4,strip.Color(0,255,255));strip.setPixelColor(5,strip.Color(i,255-i,255-i));strip.setPixelColor(6,strip.Color(i,255,255-i));strip.setPixelColor(7,strip.Color(0,255,255)); //초록strip.setPixelColor(8,strip.Color(255,255,0)); //노랑strip.show(); delay(10);}네오픽셀 코드만 보죠
for(int i=0; i<=255; i+=1){strip.show(); delay(10);}//for(int i=255; i>=0; i-=1){strip.show(); delay(10);}코드 실행시간 무시하고 딜레이 시간만 보더라도각각의 for()문에서 2.56초씩의 실행 시간이 걸리므로5.12초+10ms=5.14초 입니다.여기에 코드 실행시간이 더해지면 이보다 조금 더 길어지겠죠네오픽셀 코드를 시분할 구동해야 합니다.
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-12 오전 9:16:47// by Ok-Hyun Park////<현황>//서보 모터와 네오픽셀이 "초음파 센서 30보다 작은 경우" 작동함//<문제점>//네오픽셀 코드를 다 지운경우 원활하게 잘 됨//같이 코드를 넣은 경우 서로 영향을 받는거 같음//또한 네오픽셀 딜레이 값에 따라 서보모터 회전도 영향 받음//<개선하고 싶은 점>//초음파 센서 값이 30보다 작은경우 네오픽셀과 서보모터가 작동되어야함 하지만 서로 영향을 받지 않아야함.입니다.////작동 동영상도 첨부하였습니다.//아래는 코드입니다.//감사합니다.//#include <Adafruit_NeoPixel.h>int PIN=3;Adafruit_NeoPixel strip=Adafruit_NeoPixel(60,PIN,NEO_GRB+NEO_KHZ800);//int echo=7,trig=6;//#include <Servo.h>Servo servo1;//long sonar_time=0;long servo_time=0;long Neo_time=0;int cnt=0,i,pos=0;;long distance=100;//void setup(){Serial.begin(115200);pinMode(trig,OUTPUT); pinMode(echo,INPUT);strip.begin(); strip.show();servo1.attach(9);}//void loop(){if(millis()-sonar_time>=100){ sonar_time=millis();digitalWrite(trig,1); delayMicroseconds(10); digitalWrite(trig,0);distance=pulseIn(echo,HIGH)/58;Serial.print(distance); Serial.println(" Cm");}//if(millis()-servo_time>=1000){ servo_time=millis();if(distance<30){if(pos==0)pos=180; else pos=0; servo1.write(pos);}}//if(millis()-Neo_time>=10){ Neo_time=millis(); // 네오픽셀 딜레이 10msif(distance<30){if(cnt<256)i=cnt;else i=511-cnt;if(++cnt>511)cnt=0;//strip.setPixelColor(0,strip.Color(0,50,255));strip.setPixelColor(1,strip.Color(0,100,255));strip.setPixelColor(2,strip.Color(0,150,255));strip.setPixelColor(3,strip.Color(0,200,255));strip.setPixelColor(4,strip.Color(0,255,255));strip.setPixelColor(5,strip.Color(i,255-i,255-i));strip.setPixelColor(6,strip.Color(i,255,255-i));strip.setPixelColor(7,strip.Color(0,255,255)); //초록strip.setPixelColor(8,strip.Color(255,255,0)); //노랑strip.show();}else{ // if(distance>30)cnt=0;strip.setPixelColor(0,strip.Color(255,50,0));strip.setPixelColor(1,strip.Color(255,100,0));strip.setPixelColor(2,strip.Color(255,150,0));strip.setPixelColor(3,strip.Color(255,200,0));strip.setPixelColor(4,strip.Color(255,255,0));strip.setPixelColor(5,strip.Color(255,255,0));strip.setPixelColor(6,strip.Color(255,255,0));strip.setPixelColor(7,strip.Color(255,255,0)); //초록strip.setPixelColor(8,strip.Color(255,255,0)); //노랑strip.show();}}}
댓글 2
조회수 4,772손문일님의 댓글
손문일 작성일
네 감사합니다.
근데 위 코드가 오류가 나네요... 어디가 문제인지 몰라서 수정도 못하고 있습니다.
혹시 구조를 슈퍼 루프 구조로 해서
"초음파+네오픽셀"
"초음파+서보모터"
로해서 분리해서 코드를 짤수는 없나요?
그러면 초음파 2개를 써서 사용을 해야하나요?
너무 초보라 죄송합니다.
그리고 또 여쭤볼게 있는데
혹시 제가 의뢰를 하면 제가 요구한데로 코드를 짜주실수 있으신가요?
이런 방식으로하기에는 제가 시간이 너무 많이 소요되고 의욕이 팍팍 사라져서 너무 힘드네요.
괜찮으시다면 오프라인으로도 제가 한번 찾아뵙고 부탁드리고 싶습니다.
답변 기다리겠습니다. 감사합니다.
master님의 댓글
master
수정했으니 다시 돌려보시고요
서버모터와 네오필셀 분리를 왜 하려는거죠?
연락처는 010-9263-8951 박옥현입니다.
제가 있는 곳이 원주라서 찾아오기가 쉽지 않습니다.