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

2. Rangkaian Simulasi  [kembali]


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 \





4. Kondisi [kembali]



5. Video Simulasi [kembali]








6. Download file [kembali]

-video [disini]
-datasheet raspberry pi pico [disini]
-datasheet buzzer [disini]
-datasheet motor servo [disini]

Komentar

Postingan populer dari blog ini

SISTEM DIGITAL

ELEKTRONIKA