[KG_KAIROS] 전자회로 이론 및 아두이노 & STM32
부트캠프에서 아두이노???????라고 생각 할 수 도 있지만
아두이노를 다뤄는 봤지 구조에 대해서 한번도 공부해 본적은 없는 것 같다.
아두이노를 배우는 이유
로봇 제어기의 구성
고성능 컴퓨터와 임베디드의 연결
Edge Ai
임베디드의 구성 양산에는 STM32 muc가 주류임.
아두이노의 영향력 수많은 라이브러리 제공으로 빠르게 시스템 구성이 가능, 학습과 프로토 타이핑에 최적
p32
컴파일과 링크(링커),빌더
컴파일언어: C/C++
인터프리터 언어 : Python, Java, JavaScript, C#
엔지니어가 이걸 왜 해야하지??
그런 생각을 하면서 공부해야 성장함.
아스키 코드를 바이너리로 바꾸는 그런 작업들을 컴파일이라고함.
.exe 파일들은 01010.....0111처럼 바이너리로 되어있음.
그럼 반면 c파일 들은 아스키 코드로 작성되어 있음.
응용파일을 사용하기 위해서 코드를 실행시키기 위해 컴파일을 해주는것임.
c파일 안에도 오브젝트와 라이브러리가 있죠!!
내가짠 라이브러리랑 남이쓴 오브젝을 합치는 것을 링크라고 함.
컴파일이랑 링크를 따로 하기 귀찮아서 한번에 하는 작업이 빌드라고 함.
컴파일(Compile), 링크(Link), 빌드(Build) 정리 (tistory.com)
컴파일(Compile), 링크(Link), 빌드(Build) 정리
개인공부 후 자료를 남기기 위한 목적이기에 내용 상에 오류가 있을 수 있습니다. 목표 컴파일, 링크, 빌드 전체 과정을 이해한다. 컴파일, 컴파일러 개념 링크, 링커 개념 빌드, 빌드툴 개념 빌
kimvampa.tistory.com
자료형을 적재적소에 배치하여야함. MCU F/W단에서는 메모리와 시간이 생명.
최적설계를 위해서 필수임.
시리얼 통신 방식 (UART)
비동기 통신
시리얼 통신비트
- Start bit
- Data bit
- Parity bit(odd/even)
- Stop bit
8비트를 하나의 바이트로
보레이트
TCP는 바이너리로 통신
http = TCP/IP위에 문자열로 통신
RS232
RS485
esp32 - RS-232 - 아두이노
usb 컨버터가 필요없다.
rx
tx 크로스 연결
Tx 는 Trasmitter Data 데이터 송신
Rx 는 Receiver Data 데이터 수신
GND
General Purpose Input Output
= 4가지로 나뉨
==크게 두가지
input/output = 아날로그와 디지털
아날로그 아웃풋 = PWM
PID제어까지 해보는걸로.
PWM이란?
pulse width motor
회로를 이해하기 앞서서 간단한 예를 들어 설명하면
전기 = 물
전류 : 수량
전압 : 낙차
저항 : 수문
으로 생각하는게 편할겁니다.
전압이 크면 낙차가 크니까
const unsigned int led_0 = 6;
const unsigned int led_1 = 9;
const unsigned int led_2 = 10;
const unsigned int led_3 = 11;
void setup() {
// led 초기화
pinMode(led_0, OUTPUT);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
}
void loop() {
// led 켜기
digitalWrite(led_0, HIGH);
delay(100);
digitalWrite(led_0,LOW);
digitalWrite(led_1, HIGH);
delay(100);
digitalWrite(led_1,LOW);
digitalWrite(led_2, HIGH);
delay(100);
digitalWrite(led_2,LOW);
digitalWrite(led_3, HIGH);
delay(100);
digitalWrite(led_3,LOW);
}
는 하드코딩
const unsigned int led_0 = 6;
const unsigned int led_1 = 9;
const unsigned int led_2 = 10;
const unsigned int led_3 = 11;
void setup() {
// led 초기화
pinMode(led_0, OUTPUT);
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
}
const int pins[4] = {led_0,led_1,led_2,led_3};
int i = 0;
void loop(){
i++;
if(i>3){
i=0;
}
digitalWrite(pins[i],HIGH);
delay(100);
digitalWrite(pins[i],LOW);
}
드레가 대학원 원서넣으러 갔다.
좋은 결과 기다리며,,,잘다녀와,,,
아스키 코드에 대해잠깐 배웠습니다.
ASCII(아스키 코드)란 무엇인가? (유니코드, 패리티 검사 등) : 네이버 블로그 (naver.com)
ASCII(아스키 코드)란 무엇인가? (유니코드, 패리티 검사 등)
ASCII란? 아스키(ASCII)란, 미국 국립 표준 협회(ANSI, American National Standards In...
blog.naver.com
H001 코드를 이용한 led모듈 사용하
int RED = 11;
int GREEN = 10;
int BLUE = 9;
void setup(){
pinMode(RED,OUTPUT);
pinMode(GREEN,OUTPUT);
pinMode(BLUE,OUTPUT);
}
void loop(){
analogWrite(RED,255);
analogWrite(GREEN,0);
analogWrite(BLUE,0);
delay(1000);
analogWrite(RED,0);
analogWrite(GREEN,255);
analogWrite(BLUE,0);
delay(1000);
analogWrite(RED,0);
analogWrite(GREEN,0);
analogWrite(BLUE,255);
delay(1000);
}
스근하게 변화하는 LED
int RED = 11;
int GREEN = 10;
int BLUE = 9;
void setup(){
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
}
void loop(){
// Red to Green transition
for (int i = 0; i <= 255; i++) {
analogWrite(RED, 255 - i);
analogWrite(GREEN, i);
analogWrite(BLUE, 0);
delay(10); // Adjust delay to control the speed of transition
}
// Green to Blue transition
for (int i = 0; i <= 255; i++) {
analogWrite(RED, 0);
analogWrite(GREEN, 255 - i);
analogWrite(BLUE, i);
delay(10);
}
// Blue to Red transition
for (int i = 0; i <= 255; i++) {
analogWrite(RED, i);
analogWrite(GREEN, 0);
analogWrite(BLUE, 255 - i);
delay(10);
}
}
다음은 파이썬과 시리얼 통신 하기!!!
전에 시리얼 모니터로 결과값 출력
밑에 코드는 입력값의 글자수를 띄웁니다.
계속 입력하면 누적됩니다.
void setup(){
Serial.begin(115200);
}
void loop(){
int uga =Serial.available();
if(uga > 0){
Serial.println(uga);
}
}
void setup(){
Serial.begin(115200);
}
void loop(){
int uga =Serial.available();
if(uga > 0){
char c = Serial.read();
Serial.println(c);
}
}
그러면 스트링으로도 표현 해볼수 있겠네요.
void setup(){
Serial.begin(115200);
}
void loop(){
int uga =Serial.available();
if(uga > 0){
String c = Serial.readStringUntill('\n');
Serial.println(c);
}
}
스트링으로 출력
미션은 키를 누르면 해당 LED를 키는것!!!
python으로 LED 제어!!!
하지만 이미 해체한 난...pass
TTL 컨버터 모듈 설명 잠깐하시고.
버튼 사용 예제
const int digitalPin = 2;
void setup() {
Serial.begin(115200);
pinMode(digitalPin, INPUT_PULLUP);
}
void loop() {
int digitalValue = digitalRead(digitalPin);
Serial.println(digitalValue);
}
[UART] UART, TX, RX 가 뭘까? (tistory.com)
[UART] UART, TX, RX 가 뭘까?
UART 란 통신 규격 중 하나이다. Universal Asychronous Receiver/Transmitter의 줄임말로 시리얼 통신(Serail Communication)의 한 종류이다. UART 통신 방법은 마치 사람이 대화를 하는 것과 같은 원리를 가지고 있으
speak-of-the-devil.tistory.com