자동 차양 V2가 있는 버스 정류장의 건축 모델
구성품 및 소모품
| | × | 1 | |
| | × | 1 | |
| | × | 2 | |
| | × | 1 | |
| | × | 6 | |
| | × | 3 | |
| | × | 1 | |
| | × | 27 | |
| | × | 2 | |
| | × | 2 | |
| | × | 1 | |
| | × | 1 | |
섹션>
이 프로젝트 정보
이전 프로젝트(V 1.0)의 업그레이드입니다.
V1.0의 주요 변경 사항은 다음과 같습니다.
<울> 건축 모델의 크기입니다. 크기는 1.5m x 1m입니다.
<울> 차양의 무게, 그래서 SG99 마이크로 서보를 MG995로 변경
<울> MG995가 작동할 수 있도록 외부 전원을 추가했습니다.
<울> 우리는 차양을 확장/수축하기 위해 두 가지 다른 메커니즘을 시도했습니다. 버려진 것은 두 번째 비디오에 나와 있습니다. 마지막에 사용한 것은 3번째에 나와 있습니다. 비디오.
<울> VarSpeedServo 라이브러리를 사용하도록 스케치 수정
<울> 차양 상태 중 하나에서 작은 논리 오류 수정(Gurneet1928 덕분)
V1.0은 다음 링크에서 찾을 수 있습니다. 모델 버전 1.0
동영상: 코드>
회로 만들기
건축 모델 만들기
섹션> <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드"> 코드
<울> 강령
코드C/C++
#include VarSpeedServo 서보;int easternLight =0;int westernLight =0;int rainSensed =0;int sunshadePosition =0;int rainThreshold =512;int sunshadeExpanded =120;int sunshadeContracted =60;int 주변광 =0, int turnOnLightsOn =150, int ledIntensity =0, int ledPower =0, int servoSpeed =20, bool 디버깅 =false, // Serial Consolevoid setup(){ pinMode(A4, OUTPUT)에 대한 디버깅을 활성화하려면 TRUE로 설정합니다. // 버스정류장 내부 조명 pinMode(A5, OUTPUT); // 가로등 pinMode(A1, INPUT); // 웨스턴 라이트 pinMode(A2, INPUT); // 동부광 pinMode(A3, INPUT); // 레인 센서 아날로그 pinMode(2, INPUT); // 레인 센서 디지털 서보.attach(A0); // 서보 서보.write(sunshadeContracted, servoSpeed, true); if (디버깅){ Serial.begin(9600); Serial.println("*** 디버깅 시작됨 ***"); Serial.println("------------------------"); }}void oya_mydebug(String text, int value =NULL){ // 외부 라이브러리에 있을 수 있는 디버깅 기능과 함께 충돌을 방지하기 위해 // 'oya_'를 추가했습니다. Oya는 // 우리 회사 OfficeYA의 이름의 약어입니다. if (debugging){ Serial.print(text); if (값){ Serial.print(" ="); Serial.println(값); } else { 직렬.println(" "); } }}void expand_collapse(int eastLight, int westernLight){ if (eastLight <=westernLight) { // 일출입니다 oya_mydebug("일출입니다"); if (sunshadePosition !=sunshadeExpanded) { servo.write(sunshadeExpanded, servoSpeed, true); oya_mydebug("썬셰이드 확장"); } } if (eastLight> westernLight) { // 다운되었습니다 oya_mydebug("Sun is goind down"); if (sunshadePosition !=sunshadeContracted) {servo.write(sunshadeContracted,servoSpeed,true); oya_mydebug("차양이 계약되었습니다"); } }}void loop(){ // 센서 값 가져오기 eastLight =analogRead(A2); WesternLight =analogRead(A1); RainSensed =analogRead(A3); sunshadePosition =서보.read(); 주변 조명 =((동부 조명 + 서부 조명) / 2); // 동쪽과 서쪽의 밝기 평균 oya_mydebug("eastLight", easternLight); oya_mydebug("westernLight", westernLight); oya_mydebug("rainSensed", RainSensed); oya_mydebug("햇빛 위치", 햇빛 가리개 위치); oya_mydebug("ambientLighting",ambientLighting); // 비가 오는지 알아내시겠습니까? if (rainSensed 섹션> 회로도