예전에 올렸던 글들을 다시 읽어보며 정리하다말고.. 문뜩 떠오르는게 생겨서 만들어 봤습니다..바로 스위치를 돌리면 점점 밝아지는 전구 효과를 만들어 보는 것입니다.. [임베디드/Arduino Uno] - 아두이노에서 가변저항 사용하기 [임베디드/Arduino Uno] - 아두이노에서 PWM을 이용하여 LED 밝기 조정하기 가변저항의 양끝은 각각 5V와 그라운드에 연결하고 중앙은 a0에 연결합니다. 그리고 LED의 +극은 11번에 연결하고 -극은 그라운드에 연결해주었습니다. 동영상으로 찍어둘까 하다가.. 너무 허접한거 같아서 소스코드만 올립니다.... : ) void setup() { // 9600bps로 시리얼 속도를 설정 Serial.begin(9600); } void loop() { // 아날로그핀 ..
라이브러리 설치 https://github.com/shirriff/Arduino-IRremote 에 있는 라이브러리를 다운로드 받는다. https://github.com/shirriff/Arduino-IRremote/archive/master.zip 를 클릭하면 ZIP압축파일로 다운로드 받을 수 있다. 압축을 풀은 후.. C:\Users\webnautes\Documents\Arduino\libraries 위치에 붙여 넣었다. 그러면 아두이노 IDE에서 해당 라이브러리와 예제를 사용할 수 있다. 그리고 나서 충돌을 피하기 위해 C:\Program Files (x86)\Arduino\librarie\ RobotIRremote를 삭제한다. 그리고 아두이노 IDE를 다시 실행해야 반영이 된다. 아래와 같이 TS..
세븐 세그먼트에는 두 가지 타입이 있는데 연결방식이 차이가 있습니다. Anode 타입의 경우 COM 2개와 DP를 VCC에 연결하고 Cathode의 경우에는 그라운드를 연결해주면 됩니다. 세븐세그먼트가 Anode의 경우 연결한 예시입니다. 아래 그림에서 G는 5V가 아닌 D6에 연결해야 합니다. 동작방식의 차이는 Cathode의 경우 HIGH 신호를 준 곳이 켜지지만 Anode의 경우에는 LOW신호를 준 경우에 켜집니다. 아래 표는 Anode의 경우를 나타낸 것입니다. abcdefg0LOWLOWLOWLOWLOWLOWHIGH1HIGHLOWLOWHIGHHIGHHIGHHIGH2LOWLOWHIGHLOWLOWHIGHLOW3LOWLOWLOWLOWHIGHHIGHLOW4HIGHLOWLOWHIGHHIGHLOWLOW5LO..
PWM은 전압레벨을 제어 하여 아날로그 출력과 유사한 결과를 만들어 낼 수 있도록 해줍니다.디지털 출력 라인을 매우 빠르게 껐다 켰다 함으로써 전압을 결정 할 수 있습니다.예를 들어 아두이노의 디지털 라인은 0또는 5V의 전압을 출력할 수 있습니다. 만약 PWM을 Duty Cycle 50%로 설정한다면 평균 출력 전압은 2.5V가 되고 25% duty cycle이라면 출력은 1V가 됩니다. PWM은 아두이노 디지털 핀에서 전압을 제어 할 수 있도록 해주지만 모터를 제어하기 하기에는 전류의 제약이 있습니다. 마이크로 컨트롤러가 제공할 수 있는 전압보다 모터가 더 큰 전압을 요구하기 때문에 마이크로컨트롤러의 출력핀으로는 모터를 동작시키는데 무리가 있습니다. 그리고 또한 DC모터의 회전 방향을 조정하기 위해서..
밖에 나왔다가 아두이노 확인할게 있는데 들고 온게 없어서 혹시나 해서 찾다보니 시뮬레이터라는게 있네요.. 찾는 부품이 없어서 결국 확인은 못해보고 LED 켜는 것만 해봤는데 참 신기합니다... 현재 태스트 해본건 웹 상에서 시뮬레이터를 돌려볼 수 있는 아래 사이트로 무료로 가입하면 테스트 해볼 수 있습니다. http://123d.circuits.io/ 아래 화면은 실제로 돌려본 화면인데 부품들을 연결하고 아래쪽에 코드를 작성해주고 실행시켜보니 LED가 동작합니다. 괜찮긴 한데 웹상이라 좀 반응이 느린 감도 있지만 .. 한번쯤 사용해 볼만 한거 같습니다..
참고한 원본 글은 http://arduino.cc/en/Tutorial/BlinkWithoutDelay 입니다. 두 가지 일을 동시에 실행시키려고 하는 경우 delay()함 수를 사용하게 되면 원하는 결과를 얻지 못할 수 있습니다. 예를 들어 LED를 깜박이게 하려고 delay함수를 사용하면 delay 함수 시간 동안 프로그램을 정지시키기 때문에 그 때 버튼을 누르는 경우 놓치게 됩니다. 그래서 delay함수를 사용하는 대신에 시간을 측정합니다. 이전 시간을 기록해두고 현재시간을 계속 체크해서 일정 시간이 경과했다면 LED의 상태를 바꾸어 주고 현재 시간을 기록해둡니다. 이 과정을 반복함으로써 LED는 깜박이게 됩니다. 별도의 하드웨어 추가없이 아두이노 Uno의 13번 핀에 연결되어 있는 내장되어 있는 ..
아날로그 값을 읽어와서 전압값으로 변환 후 시리얼로 출력하는 예제입니다. 참조한 원본 글은 http://arduino.cc/en/Tutorial/ReadAnalogVoltage 입니다. 가변저항기의 양끝핀을 각각 5V와 그라운드에 연결해주고 가운데 핀은 아날로그0번에 연결합니다. 가변저항기를 좌우로 돌리면 저항값이 변하게 되는데 그에 따라 가운데 핀의 전압이 바뀌게 됩니다. 가변저항기의 5V가 연결된 핀 쪽으로 다돌리면 저항이 0에 가까워져서 가운데 핀에서는 5V의 전압이 됩니다. 반대로 가변저항기의 그라운드가 연결된 핀 쪽으로 다돌리면 저항이 10K옴에 가까워져서 가운데 핀에서는 0V의 전압이 됩니다. 아두이노의 아날로그-디지털 컨버터에 의해서 0~5V사이의 전압은 0~1023 사이의 값으로 변환됩니다..
불을 끄면 CDS값이 50이하로 떨어지고 LCD화면에 plz turn on을 출력합니다. 다시 불을 켜면 cds값은 올라가게 되고 LCD화면에 plz turn off를 출력합니다. 한줄만 지우는 방법을 못찾아서 약간 깜박입니다. 소스코드 #include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); int cdsPIN = 0; int ledPIN = 6; void setup() { // put your setup code here, to run once: Serial.begin(9600); lcd.begin(16,2); } void loop() { // put your main code here, to run repeatedly: int value = analogRead(cdsPI..
아두이노에 LED를 연결해서 시리얼로 특정 문자열을 입력하면 켜고 끄는 것을 구현했습니다. 다른 장치들을 더 붙이고 사용 가능한 명령어들을 더 만들면 다양한 활용이 가능할 듯합니다. 실행결과 turn on을 입력하면 LED를 켜줍니다. led off를 입력하면 LED를 꺼버립니다. 엉뚱한 문자열을 입력하면 입력 가능한 명령들을 알려줍니다. 소스코드 int ledPIN = 10; char ledStatus = LOW; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode( ledPIN, OUTPUT ); } String readSerial() { String str = ""; char ch; while( Se..
다섯번째 튜토리얼은 PWM을 이용하여 LED를 좀 다른 방식으로 켜봅니다. 참조한 원본 글은http://arduino.cc/en/Tutorial/Fade 입니다. 디지털 핀에서 출력은 0V와 5V만 있기 때문에 LED를 연결해서 깜빡이게 만들더라도 켜지고 꺼지기를 반복하기만 합니다.하지만 여기에서는 크리스마스 트리에 있는 전구처럼 천천히 밝아졌다가 다시 천천히 어두워지는 효과를 만들기 위해서 AnalogWrite함수를 이용합니다. AnalogWrite의 인자로 주어지는 값이 255에 가까워지면 파형이 5V를 지속적으로 유지함으로 인해 계속 LED가 켜져있는 효과를 보여주게 됩니다. 반대로 0에 가까워지게 되면 5V를 유지하는 시간이 그만큼 짧아지기 때문에 LED가 꺼져있는 것 처럼 보입니다. pulse-..