#include <stdio.h>
#include <math.h>
#include "hardware/adc.h"
#include "pico/stdlib.h"
#include "pico/cyw43_arch.h"
#include "hardware/timer.h"
const int led1 = 0;
const int led2 = 2;
const int led3 = 4;
const int led4 = 6;
const int led5 = 8;
const int led6 = 10;
const int led7 = 12;
const int disp4 = 21;
const int disp3 = 20;
const int disp2 = 19;
const int disp1 = 18;
const int cm_btn = 15;
const int cycle_count = 25;
const int vm = 26;
const int am = 27;
bool mode = false;
int cycle = 0;
int target_disp = 0;
int num_arr[10][7] = {
{1,1,1,1,1,1,0}, //cero
{0,1,1,0,0,0,0}, //uno
{1,1,0,1,1,0,1}, //dos
{1,1,1,1,0,0,1}, //tres
{0,1,1,0,0,1,1}, //cuatro
{1,0,1,1,0,1,1}, //cinco
{1,0,1,1,1,1,1}, //seis
{1,1,1,0,0,0,0}, //siete
{1,1,1,1,1,1,1}, //ocho
{1,1,1,0,0,1,1} //nueve
};
const int led_arr[7] = {led1,led2,led3,led4,led5,led6,led7};
const int disp_arr[4] = {disp1,disp2,disp3,disp4};
int disp_num_arr[3] = {0, 0, 0};
float resultado;
void clear_all(){
gpio_put(led1,false);
gpio_put(led2,false);
gpio_put(led3,false);
gpio_put(led4,false);
gpio_put(led5,false);
gpio_put(led6,false);
gpio_put(led7,false);
}
void display_on(int disp){
gpio_put(disp,true);
sleep_ms(10);
clear_all();
gpio_put(disp,false);
}
void display_number(int disp_num){
for(int i=0;i<7;i++){
gpio_put(led_arr[i],num_arr[disp_num][i]);
}
}
void display_management(){
while(cycle!=cycle_count){
for(int i = 0;i<3;i++){
display_number(disp_num_arr[i]);
display_on(disp_arr[i]);
}
cycle++;
}
cycle = 0;
}
void vm_mode(){
adc_select_input(0);
float lecture = adc_read();
resultado = ((lecture/4096)*6.6);
}
void am_mode(){
adc_select_input(1);
float lecture = adc_read();
resultado = ((lecture/4096)*6.6)/5;
}
void ctd(){
float valor = resultado;
for(int i = 0; i<3;i++){
disp_num_arr[i] = (int)(valor/pow(10,-i));
valor = valor - disp_num_arr[i];
}
}
void cm_btn_callback(uint gpio, uint32_t events){
if((gpio==cm_btn) && (events & GPIO_IRQ_EDGE_FALL)){
if(mode==false){
mode = true;
}else{
mode = false;
}
}
gpio_set_irq_enabled(cm_btn, GPIO_IRQ_EDGE_FALL, false);
}
int main() {
stdio_init_all();
gpio_init(led1);
gpio_set_dir(led1,GPIO_OUT);
gpio_init(led2);
gpio_set_dir(led2,true);
gpio_init(led3);
gpio_set_dir(led3,true);
gpio_init(led4);
gpio_set_dir(led4,true);
gpio_init(led5);
gpio_set_dir(led5,true);
gpio_init(led6);
gpio_set_dir(led6,true);
gpio_init(led7);
gpio_set_dir(led7,true);
gpio_init(disp1);
gpio_set_dir(disp1,true);
gpio_init(disp2);
gpio_set_dir(disp2,true);
gpio_init(disp3);
gpio_set_dir(disp3,true);
gpio_init(disp4);
gpio_set_dir(disp4,true);
gpio_init(cm_btn);
gpio_set_dir(cm_btn,GPIO_IN);
gpio_pull_up(cm_btn);
gpio_set_irq_enabled_with_callback(cm_btn, GPIO_IRQ_EDGE_FALL, true, cm_btn_callback);
adc_init();
adc_gpio_init(vm);
adc_gpio_init(am);
while (true) {
display_management();
if(mode==true){
am_mode();
}else{
vm_mode();
}
ctd();
}
}Loading
pi-pico-w
pi-pico-w