#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/spi.h"
#include "stdbool.h"
#include "ssd1306.h"
// SPI Defines
#define SPI_PORT spi0
#define PIN_MISO 4 //? Q7
#define PIN_SCK 2 //? CP
#define PIN_CS 5 //? PL
#define PIN_SDA 6
#define PIN_SCK 2
int main() {
stdio_init_all();
//! DEBUG
const uint LED_PIN = PICO_DEFAULT_LED_PIN;
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
//! DEBUG
//SPI initialisation. This example will use SPI at 1MHz.
spi_init(SPI_PORT, 2400);
gpio_set_function(PIN_MISO, GPIO_FUNC_SPI);
gpio_set_function(PIN_SCK, GPIO_FUNC_SPI);
gpio_init(PIN_CS);
gpio_set_dir(PIN_CS,true);
//Variable Declaration
uint8_t input_data;
int arr_input_data[8];
int btn_pressed; //! just a debug feature
//Button loop
while(true){
btn_pressed = 0;
//*Read D7 --> not included in second read_blocking
spi_read_blocking(SPI_PORT, 0, &input_data, 1);
arr_input_data[7] = input_data%2; //add value of 7th bit
//*Read SPI input
gpio_put(PIN_CS,1);
spi_read_blocking(SPI_PORT, 0, &input_data, 1);
gpio_put(PIN_CS,0);
input_data = input_data>>1;//remove bit 7
////printf("{");
//*Data --> Array shifting loop
for (int i = 6; i>=0; i--) {
arr_input_data[i] = input_data%2; //read if bit is 0 or 1
input_data = input_data>>1; //remove bit from the var
////printf(" %d ", arr_input_data[i]);
}
//! DEBUG
for (int i = 0; i<=7; i++) {
if (arr_input_data[i] == 1) {
gpio_put(LED_PIN, 1);
btn_pressed = 1;
}
}
//! DEBUG
////printf(" %d ", arr_input_data[7]);
////printf("}");
if (btn_pressed != 1) {
gpio_put(LED_PIN, 0); //! just a debug feature
}
sleep_ms(30); // 1 second / amount of packages per second
}
return 0;
}