/*//Вариант №1
#include "driver/gpio.h" // Библиотека для работы с GPIO
#define DS GPIO_NUM_2 // GPIO2 для светодиода
#define ST_CP GPIO_NUM_4 // GPIO2 для светодиода
#define SH_CP GPIO_NUM_5 // GPIO2 для светодиода
bool a[]={1,1,0,0,1,0,0,0};
void app_main() {
gpio_set_direction(DS, GPIO_MODE_OUTPUT);
gpio_set_direction(ST_CP, GPIO_MODE_OUTPUT);
gpio_set_direction(SH_CP, GPIO_MODE_OUTPUT);
gpio_set_level(ST_CP, 0);
for(int i=0; i<8; i++){
// подготовка линии SH_CP для записи, моменты t2 и тому подобные
gpio_set_level(SH_CP, 0);
//установка линии DS в соответствие с битами в массиве а[],
//моменты t3 и тому подобные
gpio_set_level(DS, a[i]); //a[0]->Q7 ...a[7]->Q0
// считываение данных с линии DS, моменты t4,...,t11
gpio_set_level(SH_CP, 1);
}
gpio_set_level(ST_CP, 1);
while (1) { }
}
*/
#include "driver/gpio.h" // Библиотека для работы с GPIO
#include "rom/ets_sys.h" // для задержки (блокирует процессор)
#define DS GPIO_NUM_2 // GPIO2 для светодиода
#define ST_CP GPIO_NUM_4 // GPIO2 для светодиода
#define SH_CP GPIO_NUM_5 // GPIO2 для светодиода
bool animat[4][8]={ // двумерный массив
{1,0,0,0,0,0,0,1}, // четыре одномерных массива
{0,1,0,0,0,0,1,0},
{0,0,1,0,0,1,0,0},
{0,0,0,1,1,0,0,0}
};
void WriteReg (bool data[8]){
gpio_set_level(ST_CP, 0);
for(int i=0; i<8; i++){
// подготовка линии SH_CP для записи, моменты t2 и тому подобные
gpio_set_level(SH_CP, 0);
//установка линии DS в соответствие с битами в массиве а[],
//моменты t3 и тому подобные
gpio_set_level(DS, data[i]); //a[0]->Q7 ...a[7]->Q0
// считываение данных с линии DS, моменты t4,...,t11
gpio_set_level(SH_CP, 1);
}
gpio_set_level(ST_CP, 1);
}
void app_main() {
gpio_set_direction(DS, GPIO_MODE_OUTPUT);
gpio_set_direction(ST_CP, GPIO_MODE_OUTPUT);
gpio_set_direction(SH_CP, GPIO_MODE_OUTPUT);
while (1) {
for (int k =0; k < 4; k++){
WriteReg(animat[k]);
ets_delay_us(500000); // микросекунды
}
}
}