mirror of
https://github.com/stasenso/rp_pico_display_engine.git
synced 2026-06-27 05:42:41 +03:00
119 lines
3.1 KiB
C
119 lines
3.1 KiB
C
#include "main.h"
|
|
#include "Thread.h"
|
|
#include "pico/multicore.h"
|
|
#include "pico/stdlib.h"
|
|
|
|
int main() {
|
|
uint16_t red = 0;
|
|
uint16_t green = 0;
|
|
uint16_t blue = 0;
|
|
uint16_t summcolor=0;
|
|
uint32_t data;
|
|
stdio_init_all();
|
|
multicore_launch_core1(coreEntry); //Запускаю в ядре 1 процесс вывода на экран
|
|
|
|
while (red<32) //Red ++
|
|
{
|
|
|
|
data = multicore_fifo_pop_blocking();
|
|
summcolor=summcolor & 0b0000011111111111 | red << 11;
|
|
fillBufer(frame_buffer,reverse(summcolor));//;
|
|
multicore_fifo_push_blocking(0); //Экран 0 нарисован
|
|
red+=1;
|
|
sleep_ms(40);
|
|
}
|
|
|
|
sleep_ms (1000);
|
|
while (green<64) //Red+Green
|
|
{
|
|
data = multicore_fifo_pop_blocking();
|
|
summcolor=summcolor & 0b1111100000011111 | green << 5;
|
|
fillBufer(frame_buffer,reverse(summcolor)); //
|
|
multicore_fifo_push_blocking(0); //Экран 0 нарисован
|
|
green+=1;
|
|
sleep_ms(20);
|
|
}
|
|
|
|
sleep_ms (1000);
|
|
red=32;
|
|
while (red!=0) //Green++
|
|
{
|
|
red-=1;
|
|
data = multicore_fifo_pop_blocking();
|
|
summcolor=(summcolor & 0b0000011111111111) | (red << 11);
|
|
fillBufer(frame_buffer,reverse(summcolor));//;
|
|
multicore_fifo_push_blocking(0); //Экран 0 нарисован
|
|
sleep_ms(20);
|
|
}
|
|
|
|
sleep_ms (1000);
|
|
while (blue<32) //Green+blue
|
|
{
|
|
data = multicore_fifo_pop_blocking();
|
|
summcolor=summcolor & 0b1111111111100000 | blue;
|
|
fillBufer(frame_buffer,reverse(summcolor)); //
|
|
multicore_fifo_push_blocking(0); //Экран 0 нарисован
|
|
blue+=1;
|
|
sleep_ms(40);
|
|
}
|
|
|
|
sleep_ms (1000);
|
|
green=64;
|
|
while (green!=0) //blue++
|
|
{
|
|
green-=1;
|
|
data = multicore_fifo_pop_blocking();
|
|
summcolor=summcolor & 0b1111100000011111 | green << 5;
|
|
fillBufer(frame_buffer,reverse(summcolor));//;
|
|
multicore_fifo_push_blocking(0); //Экран 0 нарисован
|
|
sleep_ms(20);
|
|
}
|
|
|
|
sleep_ms (1000);
|
|
red=0;
|
|
while (red<32) //Red+Blue
|
|
{
|
|
|
|
data = multicore_fifo_pop_blocking();
|
|
summcolor=summcolor & 0b0000011111111111 | red << 11;
|
|
fillBufer(frame_buffer,reverse(summcolor));//;
|
|
multicore_fifo_push_blocking(0); //Экран 0 нарисован
|
|
red+=1;
|
|
sleep_ms(40);
|
|
}
|
|
|
|
sleep_ms (1000);
|
|
green=0;
|
|
while (green<64) //Red+Green
|
|
{
|
|
data = multicore_fifo_pop_blocking();
|
|
summcolor=summcolor & 0b1111100000011111 | green << 5;
|
|
fillBufer(frame_buffer,reverse(summcolor)); //
|
|
multicore_fifo_push_blocking(0); //Экран 0 нарисован
|
|
green+=1;
|
|
sleep_ms(20);
|
|
}
|
|
|
|
while (1) {
|
|
tight_loop_contents();
|
|
}
|
|
}
|
|
|
|
void fillBufer (uint16_t* buffer,uint16_t color){
|
|
for (uint16_t y = 0; y < HEIGHT; y++)
|
|
{
|
|
for (uint16_t x = 0; x < WIDTH; x++)
|
|
{
|
|
buffer[y*WIDTH+x]=color;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
unsigned short reverse(unsigned short x)
|
|
{
|
|
x = (x & 0xFF) << 8 | (x & 0xFF00) >> 8;
|
|
return x;
|
|
}
|
|
|