Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 우송대학교
- 아두이노 모터 드라이버
- 개발 보드
- 우송대
- 7세그먼트
- 재정의함수
- 약수 구하기
- ESP32_S2
- 코틀린
- 안드로이드스튜디오
- 우송대 라즈베리파이 피코
- ATmega328p
- androidstudio
- string함수
- L293D
- 아두이노
- GCD
- 카이캐드 다운로드
- ESP32_S2_WROVER
- kotlin
- PICO4
- 추상화함수
- 라즈베리파이 피코
- 카이캐드 설치
- Arduoin
- 업캐스팅
- 자료구조
- 카이캐드
- KiCad
- 유클리드 호제법
Archives
- Today
- Total
개발자의 생활
2023년 1학기 3주차 과제(millis사용하기) 본문
millis()함수에 대한 설명과 사용법을 작성한 링크 입니다.
https://han-studio.tistory.com/10
millis함수 사용하기
아두이노에는 시간과 관련된 함수가 여러 가지가 있습니다. 대표적으로 delay 와 delaymicroseconds가 있습니다. 이 두 함수는 지정된 시간 동안 코드를 멈추는 것입니다. 이 함수들은 어떠한 복잡한
han-studio.tistory.com
3_4
//================핀 매핑=============
byte pinMap_LED_1 = 4;
byte pinMap_LED_2 = 3;
byte pinMap_Button_1 = 2;
//===================================
unsigned long timer_1 = 0;
//ms 시간저장 변수
void setup() {
// put your setup code here, to run once:
//=============핀 모드 설정============
pinMode(pinMap_LED_1, OUTPUT);
pinMode(pinMap_LED_2, OUTPUT);
pinMode(pinMap_Button_1, INPUT);
//===================================
timer_1 = millis();
//아두이노가 부팅된 시점에서 현재 시간을 변수에담는다.
}
void loop() {
// put your main code here, to run repeatedly:
if(millis() - timer_1 >= 1000){
//실시간으로 millis()로 시간을 측정해서timer_1와의 차를 구하고 1000보다
//같거나 크다면 실행
timer_1 = millis();
//다시 현재까지의 시간을 timer_1에 담는다.
digitalWrite(pinMap_LED_1, !digitalRead(pinMap_LED_1));
//pinMap_LED_1의 핀 상태를 가져와 반전시켜 다시 출력
}
if(digitalRead(pinMap_Button_1) == true){
digitalWrite(pinMap_LED_2, !digitalRead(pinMap_LED_2));
//pinMap_LED_1의 핀 상태를 가져와 반전시켜 다시 출력
delay(100);
//LED의 깜빡임을 인지할 수 있도록 0.1초 기다린다.
}
}
3_5
//================핀 매핑=============
byte pinMap_LED_1 = 4;
byte pinMap_LED_2 = 3;
byte pinMap_Button_1 = 2;
//===================================
unsigned long timer_1 = 0;
//ms 시간저장 변수
bool ButtonCheck = false;
//스위치의 입력 로직을 1번만 수행하도록 입력 상태를 저장하는 변수
void setup() {
// put your setup code here, to run once:
//=============핀 모드 설정============
pinMode(pinMap_LED_1, OUTPUT);
pinMode(pinMap_LED_2, OUTPUT);
pinMode(pinMap_Button_1, INPUT);
//===================================
timer_1 = millis();
//아두이노가 부팅된 시점에서 현재 시간을 변수에담는다.
}
void loop() {
// put your main code here, to run repeatedly:
if (millis() - timer_1 >= 1000) {
//실시간으로 millis()로 시간을 측정해서timer_1와의 차를 구하고 1000보다
//같거나 크다면 실행
timer_1 = millis();
//다시 현재까지의 시간을 timer_1에 담는다.
digitalWrite(pinMap_LED_1, !digitalRead(pinMap_LED_1));
//pinMap_LED_1의 핀 상태를 가져와 반전시켜 다시 출력
}
if (digitalRead(pinMap_Button_1) == true && ButtonCheck == false) {
//스위치가 눌리고 동시에 ButtonCheck가 false 상태일때만 실행
ButtonCheck = true;
//ButtonCheck를 true 로 변경해서
//스위치가 계속 눌린 상태라도 해당 로직을 실행하지 못하게 한다.
digitalWrite(pinMap_LED_2, !digitalRead(pinMap_LED_2));
//pinMap_LED_2의 핀 상태를 가져와 반전시켜 다시 출력
} else if (digitalRead(pinMap_Button_1) == false) {
//스위치가 눌리지 안을경우 ButtonCheck를 false로 변경
ButtonCheck = false;
}
}
3_6
//================핀 매핑=============
byte pinMap_LED_1 = 4;
byte pinMap_LED_2 = 3;
byte pinMap_LED_3 = 2;
//===================================
unsigned long timer_1 = 0;
unsigned long timer_2 = 0;
unsigned long timer_3 = 0;
//ms 시간저장 변수
bool ButtonCheck = false;
//스위치의 입력 로직을 1번만 수행하도록 입력 상태를 저장하는 변수
void setup() {
// put your setup code here, to run once:
//=============핀 모드 설정============
pinMode(pinMap_LED_1, OUTPUT);
pinMode(pinMap_LED_2, OUTPUT);
pinMode(pinMap_LED_3, OUTPUT);
//===================================
timer_3 = timer_2 = timer_1 = millis();
//아두이노가 부팅된 시점에서 현재 시간을 변수에담는다.
}
void loop() {
// put your main code here, to run repeatedly:
if (millis() - timer_1 >= 50) {
//실시간으로 millis()로 시간을 측정해서timer_1와의 차를 구하고 1000보다
//같거나 크다면 실행
timer_1 = millis();
//다시 현재까지의 시간을 timer_1에 담는다.
digitalWrite(pinMap_LED_1, !digitalRead(pinMap_LED_1));
//pinMap_LED_1의 핀 상태를 가져와 반전시켜 다시 출력
}
//위 로직과 동일
if (millis() - timer_2 >= 1000) {
timer_2 = millis();
digitalWrite(pinMap_LED_2, !digitalRead(pinMap_LED_2));
}
if (millis() - timer_3 >= 100) {
timer_3 = millis();
digitalWrite(pinMap_LED_3, !digitalRead(pinMap_LED_3));
}
}
3_7
byte pinMap_LED_1 = 2;
//핀 매핑
unsigned long timer_1 = 0;
//ms 시간저장 변수
int value = 0;
//가변저항 값을 담을변수
void setup() {
// put your setup code here, to run once:
pinMode(pinMap_LED_1, OUTPUT);
//핀 모드 설정
timer_1 = millis();
//아두이노가 부팅된 시점에서 현재 시간을 변수에담는다.
}
void loop() {
// put your main code here, to run repeatedly:
value = map(analogRead(A0), 0, 1023, 500, 1500);
//value에 아날로그0번 핀에 입력된 값 0~1023 사이 값을 500~1500
//사이 값으로 맵핑 시킨다.
if (millis() - timer_1 >= value) {
//실시간으로 millis()로 시간을 측정해서timer_1와의 차를 구하고 value보다
//같거나 크다면 실행
timer_1 = millis();
//다시 현재까지의 시간을 timer_1에 담는다.
digitalWrite(pinMap_LED_1, !digitalRead(pinMap_LED_1));
//pinMap_LED_1의 핀 상태를 가져와 반전시켜 다시 출력
}
}
'과제 > 아두이노' 카테고리의 다른 글
2024년2학기 9주차 과제 (0) | 2024.11.09 |
---|---|
2023년 1학기 6주차 (0) | 2023.04.16 |
2023년 1학기 5주차 (7세그먼트 제어) (0) | 2023.04.07 |
2023년 1학기 4주차 과제 (0) | 2023.04.01 |
2023년 1학기 2주차 실습과제 (0) | 2023.03.17 |