HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
장지원 페이지/
[Notion] :
[Notion] :
/
🚗
Line Tracer
/
4차시

4차시

태그
날짜
smbus → wiringpi 사용하면 된다.
아 .. setupGPIO 하면 GPIO pin 사용하겠다는 의미이다.
라즈베리파이 i2c lcd display 제어 (tistory.com)
이거 참고해 보기
라즈베리파이 I2C 사용방법 : 네이버 블로그 (naver.com)
 
Path: /home/pi/Yahboom_project/Raspbot/2.Hardware Control course/2.Drive motor 여기 한 번 살펴보기
#!/usr/bin/env python # coding: utf-8 import smbus # 제어 라이브러리 -> wiring pi는 GPIO 핀 제어, 얜 외부 장치와 통신(?) -> 차와 통신 하는 듯 import time import math class YB_Pcb_Car(object): def get_i2c_device(self, address, i2c_bus): self._addr = address if i2c_bus is None: return smbus.SMBus(1) else: return smbus.SMBus(i2c_bus) def __init__(self): # Create I2C device. self._device = self.get_i2c_device(0x16, 1) def write_u8(self, reg, data): try: self._device.write_byte_data(self._addr, reg, data) except: print ('write_u8 I2C error') def write_reg(self, reg): try: self._device.write_byte(self._addr, reg) except: print ('write_u8 I2C error') def write_array(self, reg, data): try: # self._device.write_block_data(self._addr, reg, data) self._device.write_i2c_block_data(self._addr, reg, data) except: print ('write_array I2C error') def Ctrl_Car(self, l_dir, l_speed, r_dir, r_speed): try: reg = 0x01 data = [l_dir, l_speed, r_dir, r_speed] self.write_array(reg, data) except: print ('Ctrl_Car I2C error') def Control_Car(self, speed1, speed2): try: if speed1 < 0: dir1 = 0 else: dir1 = 1 if speed2 < 0: dir2 = 0 else: dir2 = 1 self.Ctrl_Car(dir1, int(math.fabs(speed1)), dir2, int(math.fabs(speed2))) except: print ('Ctrl_Car I2C error') def Car_Run(self, speed1, speed2): try: self.Ctrl_Car(1, speed1, 1, speed2) except: print ('Car_Run I2C error') def Car_Stop(self): try: reg = 0x02 self.write_u8(reg, 0x00) except: print ('Car_Stop I2C error') def Car_Back(self, speed1, speed2): try: self.Ctrl_Car(0, speed1, 0, speed2) except: print ('Car_Back I2C error') def Car_Left(self, speed1, speed2): try: self.Ctrl_Car(0, speed1, 1, speed2) except: print ('Car_Spin_Left I2C error') def Car_Right(self, speed1, speed2): try: self.Ctrl_Car(1, speed1, 0, speed2) except: print ('Car_Spin_Left I2C error') def Car_Spin_Left(self, speed1, speed2): try: self.Ctrl_Car(0, speed1, 1, speed2) except: print ('Car_Spin_Left I2C error') def Car_Spin_Right(self, speed1, speed2): try: self.Ctrl_Car(1, speed1, 0, speed2) except: print ('Car_Spin_Right I2C error') def Ctrl_Servo(self, id, angle): try: reg = 0x03 data = [id, angle] if angle < 0: angle = 0 elif angle > 180: angle = 180 self.write_array(reg, data) except: print ('Ctrl_Servo I2C error')
 

 
others..
#define MOTOR1 8
#define MOTOR2 9
int main (void) {
if (wiringPiSetup() == -1) {
return 1 ;
}
pinMode (MOTOR1, OUTPUT) ;
pinMode (MOTOR2, OUTPUT) ;
++ digitalWrite
[출처] 라즈베리파이 RC카 제작 #2 - DC 모터 동작|작성자 주인아줌마