LA Percobaan 5
1. Prosedur [kembali]
- siapkan komponen yang dibutuhkan seperti ,raspberry pi pico,motor Servo, Buzzer, LED,dll
- buatlah rangkaian seperti pada modul
- masukkan listing program yang sesuai
- simulasikan rangkaian
3. Flowchart dan Listing Program [kembali]
- flowchart- listing program
MASTER
from machine import Pin, SPI
import time
# Inisialisasi pin dan SPI
spi = SPI(0, baudrate=1000000, polarity=0, phase=0, sck=Pin(18), mosi=Pin(19),
miso=Pin(16))
cs = Pin(17, Pin.OUT)
# Pin sensor dan push button
ir_sensor = Pin(14, Pin.IN) # IR sensor
push_button = Pin(15, Pin.IN) # Push button
def send_data(data):
cs.value(0)
spi.write(bytes([data]))
cs.value(1)
while True:
# Cek status IR sensor
if ir_sensor.value() == 1:
send_data(1) # IR terdeteksi, kirim '1'
print("IR Detected - LED ON")
else:
send_data(0) # IR tidak terdeteksi, kirim '0'
print("No IR - LED OFF")
# Cek status push button
if push_button.value() == 1:
send_data(2) # Tombol ditekan, kirim '2'
print("Button Pressed - Buzzer ON")
else:
send_data(3) # Tombol tidak ditekan, kirim '3'
print("Button Released - Buzzer OFF")
time.sleep(0.1)
SLAVE
#include "stm32f1xx.h"
void SPI1_Init(void);
void GPIO_Init(void);
uint8_t SPI1_Receive(void);
int main(void) {
GPIO_Init();
SPI1_Init();
while (1) {
uint8_t data = SPI1_Receive();
switch (data) {
case 1:
// LED ON (IR Detected)
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
break;
case 0:
// LED OFF
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
break;
case 2:
// Buzzer ON (Button Pressed)
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
break;
case 3:
// Buzzer OFF
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
break;
}
}
}
void SPI1_Init(void) {
__HAL_RCC_SPI1_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
SPI_HandleTypeDef hspi1;
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_SLAVE;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
HAL_SPI_Init(&hspi1);
}
uint8_t SPI1_Receive(void) {
uint8_t received_data = 0;
return received_data;
}
void GPIO_Init(void) {
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
// LED (PC13)
GPIO_InitStruct.Pin = GPIO_PIN_13;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
// Buzzer (PA5)
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
Drivers/STM32F1xx_HAL_Driver \
-video [disini]
-datasheet raspberry pi pico [disini]
-datasheet buzzer [disini]
-datasheet motor servo [disini]
Komentar
Posting Komentar