# data[].attributes.attachment_link.description
조건이 여러 개 있을 때 if문 뒤에 다른 조건에 쓰는 조건명령어는?

# data[].attributes.attachment_link.description
햄스터봇은 바닥의 색깔을 감지할 수 있다.

# data[].attributes.body
눌러서 링크로 들어간 후 "Download"버튼 클릭 후 실행하세요.

# data[].attributes.attachment_link.description
Anaconda is the birthplace of Python data science. We are a movement of data scientists, data-driven enterprises, and open source communities.

# data[].attributes.headline
로봇 AI 퀴즈를 풀어요~

# data[].attributes.subject
로봇 AI 퀴즈를 풀어요~

# data[].attributes.attachment_link.description
AI 로봇은 센서로 주변 환경을 인식하고, 이 정보를 바탕으로 스스로 판단하고 행동할 수 있다.

# data[].attributes.body
다운로드 받아서 설치 하세요.

# data[].attributes.headline
디바이스 드라이브 설치파일

# data[].attributes.subject
디바이스 드라이브 설치파일

# data[].attributes.body
from roboid import *

h = HamsterS()

# data[].attributes.body
h.board_forward()

# data[].attributes.body
h.board_right()

# data[].attributes.body
h.wheels(30, 30)

# data[].attributes.body
wait(1000)

# data[].attributes.body
h.stop()

# data[].attributes.body
for i in range(3):

h.board_forward()

# data[].attributes.body
import random

# data[].attributes.body
wait(random.randint(1000, 10000))

# data[].attributes.body
for speed in range(100):

h.wheels(speed)

wait(20)

# data[].attributes.body
for speed in range(100, -1, -1):

h.wheels(speed)

wait(20)

# data[].attributes.body
h.leds('blue', 'red')

# data[].attributes.body
h.leds('blue', 'off')

# data[].attributes.body
while True:

h.buzzer(261.63)

# data[].attributes.body
hz = 0

while True:

for i in range(10):

h.buzzer(hz)

hz += 100

wait(200)

hz = 0

# data[].attributes.body
while True:

for hz in range(500,701,10):

h.buzzer(hz)

wait(20)

h.leds('red')

wait(50)

h.leds('off')

wait(50)

# data[].attributes.body
h.note(‘c4’,  0.5)

# data[].attributes.body
def play_music():

for i in range(2):

h.note('C4', 0.5)

h.note('E4', 0.5)

h.note('G4', 0.5)

for j in range(3):

h.note('A4', 0.5)

h.note('G4', 1)

h.note(0, 0.5)

# data[].attributes.body
while True:

print(h.left_proximity(), h.right_proximity())

wait(50)

# data[].attributes.body
while h.left_proximity() < 40 and h.right_proximity() < 40:

h.wheels(30)

wait(50)

h.stop()

# data[].attributes.body
n = int(input("숫자를 입력하세요: "))

if n > 10:

print(f"{n}은 10보다 큽니다!")

# data[].attributes.body
while True:

if h.left_proximity() < 40 and h.right_proximity() < 40:

h.wheels(30)

else:

h.wheels(-30)

wait(50)

# data[].attributes.body
while True:

if h.left_proximity() < 40 and h.right_proximity() < 40:

h.wheels(30)

else:

h.wheels(-30, 30)

wait(1000)

wait(50)

# data[].attributes.body
while True:

proximity = h.left_proximity( )

if proximity > 15:

left_speed = (40-proximity) * 4

else:

left_speed = 0

proximity = h.right_proximity( )

if proximity > 15:

right_speed = (40-proximity) * 4

else:

right_speed = 0

h.wheels(left_speed, right_speed)

wait(20)

# data[].attributes.body
def calc_speed(proximity):

if proximity > 15:

return (40-proximity) * 4

else:

return 0

while True:

left_speed = calc_speed(h.left_proximity( ))

right_speed = calc_speed(h.left_proximity( ))

h.wheels(left_speed, right_speed)

wait(50)

# data[].attributes.body
pitch = 0

while True:

proximity = h.left_proximity( )

if proximity < 10:

proximity = 0

pitch = (pitch * 9 + proximity)/10.0

h.note(pitch)

wait(20)

# data[].attributes.body
from roboid import *

h = HamsterS()

# data[].attributes.body
from roboid import *

h = HamsterS()

# data[].attributes.body
from roboid import *

h = HamsterS()

# data[].attributes.attachment_link.description
AI 로봇은 센서로 주변 환경을 인식하고, 이 정보를 바탕으로 스스로 판단하고 행동할 수 있다.

# data[].attributes.body
from roboid import *

h = HamsterS()

# data[].attributes.body
while h.left_floor()>20 and h.right_floor()>20:

h.wheels(30)

wait(20)

h.stop()

# data[].attributes.body
h.wheels(30)

count = 0

while True:

if h.left_floor()<20 or h.right_floor()<20:

count += 1

print('count : ', count)

h.wheels(30)

wait(1000)

wait(20)

# data[].attributes.body
if count ==4:

white = False

h.stop()

# data[].attributes.body
h.wheels(30)

tick = 0

code = ' '

while True:

if h.left_floor()>80 and h.right_floor()>80:

if tick > 0:

if tick > 20:

code += '*'

else:

code += '.'

print(code)

tick = 0

elif h.left_floor()<20 and h.right_floor()<20:

tick +=1

wait(20)

# data[].attributes.body
while True:

if h.left_floor()>50:

h.wheels(0, 30)

else:

h.wheels(30, 0)

wait(10)

# data[].attributes.body
while True:

if h.left_floor()>50:

h.wheels(30, 0)

else:

h.wheels(0, 30)

wait(10)

# data[].attributes.body
while True:

h.wheels(30, 30)

if h.left_floor()<50:

h.wheels(-30, 30)

elif h.right_floor()<50:

h.wheels(30, -30)

wait(10)

# data[].attributes.body
while True:

diff = h.left_floor() - h.right_floor()

h.wheels(30+diff*0.4, 30-diff*0.4)

wait(10)

# data[].attributes.body
while True:

print(h.light())

wait(20)

# data[].attributes.body
while True:

if h.light() < 10:

h.buzzer(1000)

else:

h.buzzer(0)

wait(20)

# data[].attributes.headline
모스 신호 보내는 학생

# data[].attributes.subject
모스 신호 보내는 학생

# data[].attributes.body
def blink_short():

h.leds(h.COLOR_NAME_WHITE)

wait(200)

h.leds(0)

wait(200)

def blink_long():

h.leds(h.COLOR_NAME_WHITE)

wait(1000)

h.leds(0)

wait(200)

def send_morse1(): #첫 번째 모스 부호(.--.)

blink_short()

blink_long()

blink_long()

blink_short()

def send_morse2(): #두 번째 모스 부호(.--.)

blink_long()

blink_short()

blink_short()

blink_long()

send_morse1()

# data[].attributes.body
def act1(): #첫번째 부호에 대한 동작

h.wheels(-30)

wait(1000)

h.wheels(-30, 30)

wait(1000)

h.stop()

def act2(): #두번째 부호에 대한 동작

h.wheels(-30)

wait(1000)

h.wheels(30, -30)

wait(1000)

h.stop()

tick = 0

code = ' '

while True:

if h.light() < 10: #어두우면

if tick > 0:

if tick > 40: #밝은 시간이 길다

code += '*'

else: #밝은 시간이 짧다

code += '.'

print(code) #모스 부호 확인

if code == '.**.':

code = ' '

act1()

if code == '*..*':

code = ' '

act2()

elif h.light() > 20: #밝으면

tick += 1

wait(20)

# data[].attributes.body
while True:

print(h.acceleration_x( ), h.acceleration_y( ), h.acceleration_z( ))

wait(1000)

# data[].attributes.body
while True:

if h.acceleration_x( ) > 2000:

h.wheels(30)

wait(1000)

h.stop()

wait(20)

# data[].attributes.body
tick = 0

while True:

if h.acceleration_z( ) > -2048:

tick +=1

if tick <=10:

h.buzzer(1000)

elif tick <=20:

h.buzzer(0)

else:

tick = 0

else:

h.buzzer(0)

tick = 0

wait(20)

# data[].attributes.body
while True:

accX = h.acceleration_x( )

if accX > 1500:

h.wheels(-30)

elif accX < -1500:

h.wheels(30)

wait(20)

# data[].attributes.attachment_link.description
햄스터봇은 바닥의 색깔을 감지할 수 있다.

# data[].attributes.body
from roboid import *

h = HamsterS()

# data[].attributes.body
from roboid import *

h = HamsterS()

# data[].attributes.body
while True:

print(h.acceleration_x( ), h.acceleration_y( ), h.acceleration_z( ))

wait(1000)

# data[].attributes.body
while True:

if h.acceleration_x( ) > 2000:

h.wheels(30)

wait(1000)

h.stop()

wait(20)

# data[].attributes.body
tick = 0

while True:

if h.acceleration_z( ) > -2048:

tick +=1

if tick <=10:

h.buzzer(1000)

elif tick <=20:

h.buzzer(0)

else:

tick = 0

else:

h.buzzer(0)

tick = 0

wait(20)

# data[].attributes.body
while True:

accX = h.acceleration_x( )

if accX > 1500:

h.wheels(-30)

elif accX < -1500:

h.wheels(30)

wait(20)

# data[].attributes.body
h.io_mode_a (h.IO_MODE_DIGITAL_OUTPUT)

h.io_mode_b (h.IO_MODE_DIGITAL_OUTPUT)

def gripper(state):

if(state==1):

h.output_a(1)

h.output_b(0)

elif (state==0):

h.output_a(0)

h.output_b(1)

elif (state==-1):

h.output_a(0)

h.output_b(0)

while True:

gripper(1)

wait(1000)

gripper(0)

wait(1000)

# data[].attributes.body
h.io_mode_a (h.IO_MODE_DIGITAL_OUTPUT)

h.io_mode_b (h.IO_MODE_DIGITAL_OUTPUT)

def gripper(state):

if(state==1):

h.output_a(1)

h.output_b(0)

elif (state==0):

h.output_a(0)

h.output_b(1)

elif (state==-1):

h.output_a(0)

h.output_b(0)

while True:

print(h.light())

if h.light() > 50:

gripper(1)

else: griper(0)

wait(200)

# data[].attributes.body
h.open_gripper( )

while True:

if h.acceleration_x( ) > 2000:

print(h.acceleration_x())

wait(500)

h.close_gripper( )

else:

h.open_gripper( )

wait(100)

# data[].attributes.body
h.io_mode_a (h.IO_MODE_DIGITAL_OUTPUT)

h.io_mode_b (h.IO_MODE_DIGITAL_OUTPUT)

h.close_gripper( )

while True:

print(h.left_floor( ), h.right_floor( ))

if (h.left_floor( )>60 or h.right_floor( )>60):

h.line_tracer_mode(3)

wait(20)

elif(h.left_floor( )<40 and h.right_floor( )<40):

h.line_tracer_mode(3)

h.stop( )

h.open_gripper( )

h.release_gripper( )

wait(500)

h.wheels(-22,22)

# data[].attributes.body
h.open_gripper( )

while True:

h.wheels(30)

if h.left_proximity( ) > 50 and h.right_proximity( ) > 50:

h.stop()

wait(100)

h.close_gripper( )

else:

h.open_gripper( )

wait(100)

# data[].attributes.body
h.io_mode_a (h.IO_MODE_DIGITAL_OUTPUT)

h.io_mode_b (h.IO_MODE_DIGITAL_OUTPUT)

h.close_gripper()

count = 0

while True:

print(h.left_floor(), h.right_floor())

if (h.left_floor()>60 or h.right_floor()>60):

h.line_tracer_mode(3)

wait(20)

elif(h.left_floor()<40 and h.right_floor()<40):

count +=1

print('count : ', count)

h.line_tracer_mode(3)

h.stop()

wait(500)

if count == 1:

h.wheels(-32,32)

wait(1800)

else:

h.stop()

# data[].attributes.body
h.close_gripper()

while True:

print(h.left_floor(), h.right_floor())

if (h.left_floor()>60 or h.right_floor()>60):

h.line_tracer_mode(3)

wait(20)

elif(h.left_floor()<40 and h.right_floor()<40):

h.line_tracer_mode(3)

h.stop()

wait(500)

h.open_gripper()

wait(500)

h.wheels(-30, -30)

wait(1500)

h.stop()

break

# data[].attributes.body
h.open_gripper()

while True:

if h.left_proximity( ) > 50 and h.right_proximity( ) > 50:

wait(3000)

h.wheels(30,30)

wait(800)

h.close_gripper( )

wait(500)

h.wheels(-30,30)

wait(2000)

if (h.left_floor()>60 or h.right_floor()>60):

h.line_tracer_mode(3)

wait(20)

elif(h.left_floor()<40 and h.right_floor()<40):

h.line_tracer_mode(3)

h.stop()

wait(500)

h.open_gripper()

wait(500)

break

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

print(h.left_proximity(), h.right_proximity())

wait(50)

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

if h.left_proximity( ) > 30:

h.wheels(30, 10)

else:

h.wheels(10, 30)

wait(20)

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

if h.left_proximity( ) > 30:

h.wheels(50, 50)

else:

h.wheels(0, 50)

wait(20)

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

print(h.left_proximity())

wait(100)

# data[].attributes.headline
왼쪽바퀴(근접센서값), 오른쪽바퀴(30)설정

# data[].attributes.subject
왼쪽바퀴(근접센서값), 오른쪽바퀴(30)설정

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

h.wheels(h.left_proximity(), 30)

wait(10)

# data[].attributes.headline
원하는 만큼 떨어져 돌기

# data[].attributes.subject
원하는 만큼 떨어져 돌기

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

h.wheels(h.left_proximity()*0.75, 30)

wait(10)

# data[].attributes.headline
컵 따라 돌기 (슬라럼)

# data[].attributes.subject
컵 따라 돌기 (슬라럼)

# data[].attributes.body
from roboid import *

h = HamsterS()

state=0

count=0

while True:

left=h.left_proximity()

right=h.right_proximity()

if state==0:

h.wheels(left*2.5, 50)

if right>15: count+=1

else: count=0

if count>10:

count=0

state=1

elif state==1:

h.wheels(50, right*2.5)

if left<5: count+=1

else: count=0

if count>10:

count=0

state=2

elif state==2:

h.wheels(50, right*2.5)

if left>15: count+=1

else: count=0

if count>10:

count=0

state=3

else:

h.wheels(left*2.5, 50)

if right<5: count+=1

else: count=0

if count>10:

count=0

state=0

wait(10)

# data[].attributes.headline
양쪽 반사판 끼고 왼쪽 벽 따라 주행

# data[].attributes.subject
양쪽 반사판 끼고 왼쪽 벽 따라 주행

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

if h.left_proximity() > 50:

h.wheels(40, 0)

else:

h.wheels(0, 40)

wait(10)

# data[].attributes.headline
양쪽 센서로 복도 중앙 주행1

# data[].attributes.subject
양쪽 센서로 복도 중앙 주행1

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

h.wheels(30, 30)

if h.left_proximity() > 50:

h.wheels(40, -40)

elif h.right_proximity() > 50:

h.wheels(-40, 40)

wait(10)

# data[].attributes.headline
양쪽 센서로 복도 중앙 주행1-2

# data[].attributes.subject
양쪽 센서로 복도 중앙 주행1-2

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

if h.left_proximity() > 50:

h.wheels(40, -40)

elif h.right_proximity() > 50:

h.wheels(-40, 40)

else:

h.wheels(40, 40)

wait(10)

# data[].attributes.headline
양쪽 센서로 복도 중앙 주행2

# data[].attributes.subject
양쪽 센서로 복도 중앙 주행2

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

h.wheels(30, 30)

diff = h.left_proximity() - h.right_proximity()

if diff > 0:

h.wheels(30, -30)

wait(100)

elif diff < 0:

h.wheels(-30, 30)

wait(100)

# data[].attributes.headline
양쪽 센서로 복도 중앙 주행2-2

# data[].attributes.subject
양쪽 센서로 복도 중앙 주행2-2

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

diff = h.left_proximity() - h.right_proximity()

if diff > 0:

h.wheels(30, -30)

wait(100)

h.wheels(30, 30)

wait(100)

elif diff < 0:

h.wheels(-30, 30)

wait(100)

h.wheels(30, 30)

wait(100)

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

diff = h.left_proximity() - h.right_proximity()

h.wheels(diff, -diff)

wait(10)

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

diff = h.left_proximity() - h.right_proximity()

h.wheels(30 + diff*1.3, 30 - diff*1.3)

wait(10)

# data[].attributes.headline
왼쪽 반사판(미로 탈출)

# data[].attributes.subject
왼쪽 반사판(미로 탈출)

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

diff = h.left_proximity() - 40

h.wheels(30 + diff*0.8, 30 - diff*0.8)

wait(10)

# data[].attributes.headline
왼쪽 반사판 (막힌 길에서 제자리 돌아보기)

# data[].attributes.subject
왼쪽 반사판 (막힌 길에서 제자리 돌아보기)

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

left = h.left_proximity()

right = h.right_proximity()

if right > 45:

while right > 10:

h.wheels(50, -50)

right = h.right_proximity()

wait(10)

else:

diff = left - 45

h.wheels(40 + diff 0.8, 40 - diff 0.8)

wait(10)

# data[].attributes.headline
왼쪽 반사판 (막힌 길에서 제자리 돌아보기)

# data[].attributes.subject
왼쪽 반사판 (막힌 길에서 제자리 돌아보기)

# data[].attributes.body
from roboid import *

h = HamsterS()

while True:

left = h.left_proximity()

right = h.right_proximity()

if right > 45:

while right > 10:

h.wheels(50, -50)

right = h.right_proximity()

wait(10)

else:

diff = left - 45

h.wheels(40 + diff 0.8, 40 - diff 0.8)

wait(10)

# data[].attributes.body
from roboid import *

h = HamsterS()

def slalom(left_speed, right_speed, check):

count = 0

while count < 10:

left = h.left_proximity()

right = h.right_proximity()

h.wheels(left_speed(left, right), right_speed(left, right))

if check(left, right): count += 1

else: count = 0

wait(10)

while True:

slalom(lambda l, r: l * 2.5, lambda l, r: 50, lambda l, r: r > 15)

slalom(lambda l, r: 50, lambda l, r: r * 2.5, lambda l, r: l < 5)

slalom(lambda l, r: 50, lambda l, r: r * 2.5, lambda l, r: l > 15)

slalom(lambda l, r: l * 2.5, lambda l, r: 50, lambda l, r: r < 5)

# data[].attributes.body
import roboidai as ai

cam = ai.Camera('usb0')

flip = ['h', 'v', 'a', 'n']

index = 0

while True:

cam.show(cam.read()) #이미지 1장씩 읽기

key = cam.check_key()

if key == 'esc':

break

elif key == ' ': #스페이스 누르면

print(flip[index])

cam.set_flip(flip[index])

index = (index + 1) % 4

# data[].attributes.headline
병렬처리 (소리내면서 LED 깜빡이기)

# data[].attributes.subject
병렬처리 (소리내면서 LED 깜빡이기)

# data[].attributes.body
from roboid import *

h = HamsterS()

def play_music():

for _ in range(2):

h.note('C4', 0.5)

h.note('E4', 0.5)

h.note('G4', 0.5)

for _ in range(3):

h.note('A4', 0.5)

h.note('G4', 1)

h.note(0, 0.5)

def blink():

for _ in range(5):

h.leds('RED', 'RED')

wait(500)

h.leds('OFF', 'OFF')

wait(500)

parallel(play_music(), blink())

# data[].attributes.headline
찰칵 말하며 사진 찍기

# data[].attributes.subject
찰칵 말하며 사진 찍기

# data[].attributes.body
import roboidai as ai

import pyttsx3 as tts

cam = ai.Camera('usb0')

image = cam.count_down(5)

print('DONE')

tts.speak('찰칵')

cam.read_until_key( ) #아무키나 누르면 종료

# data[].attributes.body
import roboidai as ai

cam = ai.Camera('usb0')

dt = ai.ObjectDetector(multi=True, lang='ko') #한국어로 사물인식 객체 반환

dt.download_model(overwrite=False) #모델 파일을 인터넷에서 내려 받기

dt.load_model() #모델 파일 읽기

while True:

image = cam.read()

if dt.detect(image, conf_threshold=0.5): #사물이 인식되면

image = dt.draw_result(image) #인식된 사물 image로 저장

print(dt.get_label()) #해당 사물의 라벨 출력

wait(50)

cam.show(image)

if cam.check_key() == 'esc' : break

# data[].attributes.body
from roboid import *

import keyboard

h = HamsterS()

if not h.is_connected():

print("햄스터S 로봇 연결에 실패했습니다. 연결 상태를 확인해주세요.")

else:

print("햄스터S 로봇 연결 성공! 키보드 조작을 시작합니다.")

while True:

if keyboard.is_pressed("up"):

h.wheels(30)

elif keyboard.is_pressed("down"):

h.wheels(-30)

elif keyboard.is_pressed("right"):

h.wheels(30, 0)

elif keyboard.is_pressed("left"):

h.wheels(0, 30)

elif keyboard.is_pressed(" "):

h.wheels(0)

wait(50)

# data[].attributes.headline
장애물을 돌아 장바구니 들고 오기 (파일: drive_market.py)

# data[].attributes.subject
장애물을 돌아 장바구니 들고 오기 (파일: drive_market.py)

# data[].attributes.body
from roboid import *

import keyboard

h = HamsterS()

# 로봇과의 연결 상태를 확인하는 코드를 추가하여 안전성을 높임.

if not h.is_connected():

print("햄스터S 로봇 연결에 실패했습니다. 연결 상태를 확인해주세요.")

else:

print("햄스터S 로봇 연결 성공! 키보드 조작을 시작합니다.")

# IO 포트 A와 B의 모드를 설정 (io_mode_a/b 대신 io_mode를 사용하고 포트 번호를 함께 전달)

h.io_mode_a(h.IO_MODE_DIGITAL_OUTPUT)

h.io_mode_b(h.IO_MODE_DIGITAL_OUTPUT)

# 4. 초기 그리퍼 닫기 메서드를 호출 (괄호 추가)

h.close_gripper()

while True:

if keyboard.is_pressed("up"):

h.wheels(30)

elif keyboard.is_pressed("down"):

h.wheels(-30)

elif keyboard.is_pressed("right"):

h.wheels(30, 0)

elif keyboard.is_pressed("left"):

h.wheels(0, 30)

elif keyboard.is_pressed("z"):

h.close_gripper() # 그리퍼 닫기

elif keyboard.is_pressed("x"):

h.open_gripper() # 그리퍼 열기

elif keyboard.is_pressed("c"):

h.release_gripper()

elif keyboard.is_pressed(" "):

h.wheels(0) # 정지

wait(20)

# data[].attributes.body
from roboid import *

import keyboard

h = HamsterS()

if not h.is_connected():

print("햄스터S 로봇 연결에 실패했습니다. 연결 상태를 확인해주세요.")

else:

print("햄스터S 로봇 연결 성공! 키보드 조작 및 센서 동작을 시작합니다.")

h.io_mode_a(h.IO_MODE_DIGITAL_OUTPUT)

h.io_mode_b(h.IO_MODE_DIGITAL_OUTPUT)

h.close_gripper()

h.line_tracer_mode(3)

while True:

print(h.left_floor(), h.right_floor())

wait(30)

# 2. 양쪽 센서에서 동시에 검은색 감지 시 (막다른 길)

if h.left_floor() < 20 and h.right_floor() < 20:

print("양쪽 검은색 감지 (가로줄): 180도 회전 및 경로 복귀")

# 2-1. 라인 트레이서 모드 해제 및 정지

h.line_tracer_mode(0) # 라인 추적 명령 중단

h.stop() # 즉시 멈춤

wait(100)

# 2-2. 180도 제자리 회전

h.wheels(30, -30)

wait(1600) # 180도 회전에 필요한 추정 시간 대기

h.stop()

wait(50)

# 2-3. 회전 후 복귀하여 추적 재개

h.line_tracer_mode(3)

elif h.left_floor() < 80 and h.right_floor() < 80:

print("양쪽 흰색 감지: 출발점 도착, 멈춤")

h.stop()

h.line_tracer_mode(0) # 라인 추적 모드 해제

break # 반복문 종료

else:

pass # 라인 트레이싱 모드 3이 계속 작동 중

# data[].attributes.body
from roboid import *

import keyboard

h = HamsterS()

# 로봇과의 연결 상태를 확인하는 코드를 추가하여 안전성을 높임.

if not h.is_connected():

print("햄스터S 로봇 연결에 실패했습니다. 연결 상태를 확인해주세요.")

else:

print("햄스터S 로봇 연결 성공! 키보드 조작을 시작합니다.")

# IO 포트 A와 B의 모드를 설정 (io_mode_a/b 대신 io_mode를 사용하고 포트 번호를 함께 전달)

h.io_mode_a(h.IO_MODE_DIGITAL_OUTPUT)

h.io_mode_b(h.IO_MODE_DIGITAL_OUTPUT)

# 4. 초기 그리퍼 닫기 메서드를 호출 (괄호 추가)

h.close_gripper()

while True:

if keyboard.is_pressed("z"):

h.close_gripper() # 그리퍼 닫기

elif keyboard.is_pressed("x"):

h.open_gripper() # 그리퍼 열기

elif keyboard.is_pressed("c"):

h.release_gripper()

elif keyboard.is_pressed(" "):

h.wheels(0, 0) # 정지

wait(20)

# 바닥 센서 기반 동작 (if-elif 구조 수정)

# 'h.line_tracer_mode(3)'은 라인 트레이서 모드를 켜는 명령이므로,

# 직접 제어 코드와 함께 사용하면 충돌이 일어날 수 있음.

# 여기서는 센서 값에 따른 특정 동작을 수행하는 것으로 가정하고 수정.

# 라인 검출 (검은색 라인 등)

if (h.left_floor() > 60 or h.right_floor() > 60):

print("라인 감지됨: 라인 트레이서 모드 3번으로 전환 시도")

h.line_tracer_mode(3)

wait(20)

# 라인 없음 (흰색 바닥 또는 특정 영역)

elif (h.left_floor() < 40 and h.right_floor() < 40):

print("라인 없음: 물건 잡고 후진 시도")

h.stop()

h.open_gripper()

h.release_gripper()

wait(500)

h.wheels(-22, 22) # 후진하면서 제자리 회전