난방실 만들기(온도에 따른 드라이기 제어)4 수강중 온도변화에 따른 드라이기 동작은 됩니다. (45도미만 에서 드라이기 켜짐 / 50도 이상에서 드라이기꺼짐) 그런데 드라이기가 켜질때 이전 강의에서 AC Relay를 이용해 2초마다 드라이기를 끄고 켰던것처럼 동작합니다 (드라이기가 지속적으로 동작하는게 아니라 2초마다 켜졌다 꺼졋다합니다) // HAL_GPIO_TogglePin(PB5_RELAY_ON_OFF_CTRL_GPIO_Port, PB5_RELAY_ON_OFF_CTRL_Pin); // HAL_Delay(2000); 위 코드를 주석처리하거나 지운상태로 디버그를 해도 그렇게 동작합니다 하드웨어적으로도 확인 해봤는데 문제가 없는 것 같습니다..
안녕하세요. 덕분에 강의 잘 듣고 있습니다. 다름이 아니라, ST-Link firmware upgrade를 성공적으로 진행했음에도 불구하고 다음과 같이 에러가 발생합니다. utility를 통해서 upgrade도 성공적으로 마쳤고, connect도 잘되는 상태입니다. USB를 재연결해도 안됩니다. 도와주시면 감사하겠습니다.
사물인터넷 통신은 내 손에 (Arduino, MQTT, Nodejs, MongoDB, Android,VS Code)
Drivers를 선택해서 나온 url주소로도 MongoDB for VS Code를 선택해서 나온 url주소로도 접속이 실패합니다. Node.js 코드는 다음과 같이 작성했습니다. const mongoose = require("mongoose"); const MONGODB_URL = "mongodb+srv://root:1234@education.sidnf.mongodb.net/"; mongoose .connect(MONGODB_URL) .then(() => console.log("Connected to database!")) .catch(() => console.log("Connection failed...")) Connection failed... 라고 나옵니다. Network Access에서도 0.0.0.0으로도 해보고, 제 컴퓨터의 IP주소로도 해보았습니다. 전부 접속 실패가 뜹니다. 이유를 알 수 있을까요?!
void send_port(uint8_t X, uint8_t port) { send(X); send(port); HAL_GPIO_WritePin(FND_RCLK_GPIO_Port, FND_RCLK_Pin, LOW); HAL_GPIO_WritePin(FND_RCLK_GPIO_Port, FND_RCLK_Pin, HIGH); } 이렇게 코드를 보면 X, port 를 send하고 RCK 라이징 엣지를 만들어서 최종적으로 출력 하는구나 를 알 수 있는데 만약 이런 코드 없이 데이터시트를 보고 코드를 만든다고 할 때 X와 port를 함께 send하는것, X, port 순으로 send 해야 한다는 것, 위치(port)는 0b0001, 0b0010, 0b0100, 0b1000 으로 설정한다는 것 들은 어떻게 알 수 있나요? 데이터시트를 통해서 이런 정보까지는 얻을 수 없는 것 같아서요..
하드웨어 구성 상 7-segment 의 네자릿수가 동시에 다른 숫자를 나타나게 하는 것은 불가능 하다고 설명해 주셨는데요. SPI 통신을 사용할 때는 이 문제가 해결된 것처럼 보입니다. GPIO 통신을 사용할 때는 각 자릿수를 빠르게 켜서 마치 동시에 켜진 것처럼 보이는 방식을 사용하는데, SPI 통신을 사용할 때도 7-segment의 각 자릿수가 동시에 켜진 것처럼(실제로는 동시가 아니지만) 보이는 것일까요??
개발환경을 세팅하려고 하는데 아래와 같은 창이 떠서 위 화면의 register를 했는데 이상하게 비밀번호를 쓰는 칸이 없기에 Forgot password?를 눌러서 위와같은 이메일을 받아서 "Create a myST account" 버튼을 클릭했는데 그냥 하얀 화면이 나오는데 왜 이러는지 혹시 아시나요,,,혼자 20분정도 해매고 있는 것 같네요,,
MX_GPIO_Init(); 를 들어가면 HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, GPIO_PIN_SET); 가 나오고 , 이코드는 `if (PinState != GPIO_PIN_RESET) { GPIOx->BSRR = GPIO_Pin; } else { GPIOx->BSRR = (uint32_t)GPIO_Pin << 16u; } 즉, 핀 상태에 따라 led불을 온오프 시키는 역할을 하는것으로 이해하고 있습니다! 그렇다면 main문에서 MX_GPIO_Init() 을 사용할때는 while문 안에 /*HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 1); HAL_Delay(100); HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, 0); HAL_Delay(100);*/ 이 코드가 없어도 동작해야하는 것이 아닌가 라고 생각했습니다. 그래서 실제로 while문 내부를 다 지우고 MX_GPIO_Init() 만 쓰니까 동작이 안 되더라구요. 제가 잘 못 이해하고 있는 부분이 무엇인지를 확실시를 못해서 질문드립니다! 감사합니다.
HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin, GPIO_PIN_SET); 1.켠다 *(0x40011000) = (8192); *reg2= 0x2000; 2.끈다 *(0x40011000)= (8192<<16); *reg2= (0x2000 << 16); 이라고 해석이 되었는데 , 실제 디버깅 시에는 *(0x40011000) 가 아니라 *(0x40011010) 일때 동작하는 이유가 무엇인가요?
전부 합체 완전체 보드~~~ 과정 중에 if(g_f_sw_fix){ printf("push_sw_fix\r\n"); g_f_sw_fix = 0; HAL_GPIO_TogglePin(PB5_RELAY_ON_OFF_CTRL_GPIO_Port, PB5_RELAY_ON_OFF_CTRL_Pin); } 위와 같이 버튼 interrupt 발생하여 relay 컨트롤에 반전 신호를 주면 Live Expression 또는 UART로 확인했을 때 sw_fix 및 relay 컨트롤뿐만 아니라 sw_up, sw_down, sw_on 에도 인터럽트가 발생해 값이 1로 변했다가 0으로 떨어집니다. 릴레이 컨트롤 부분을 주석처리하고 버튼 동작만 했을 땐 sw_fix만 프린트되고 값이 변하는 것을 확인했고, 회로도 구성상 잘못 연결한 부분은 없는데 어떤 게 문제일까요??? ++ 최초 코드 실행 or 디버그 동작 초기에 sw_up, sw_down, sw_fix, sw_on 이 전부 1로 찍혔다가 0으로 내려가는 것으로 보아, 초기 실행시 모든 GPIO 인터럽트가 발생하는 것 같은데,, 강사님의 강의 영상을 보면 초기 실행시에 아무런 인터럽트가 발생하지 않는 것 같은데 뭐가 문제일까요?