kopia lustrzana https://github.com/pimoroni/pimoroni-pico
				
				
				
			
		
			
				
	
	
		
			65 wiersze
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			65 wiersze
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
| #include <math.h>
 | |
| 
 | |
| #include "breakout_dotmatrix.hpp"
 | |
| #include "time.h"
 | |
| 
 | |
| using namespace pimoroni;
 | |
| 
 | |
| I2C i2c(BOARD::BREAKOUT_GARDEN);
 | |
| BreakoutDotMatrix display(&i2c);
 | |
| static const uint8_t WIDTH = display.WIDTH;
 | |
| static const uint8_t HEIGHT = display.HEIGHT;
 | |
| static const uint8_t HALF_WIDTH = (WIDTH / 2);
 | |
| 
 | |
| uint8_t values[HALF_WIDTH] = { 0, 0, 0, 0, 0 };
 | |
| uint8_t next_value = 0;
 | |
| 
 | |
| int main() {
 | |
| #ifdef PICO_DEFAULT_LED_PIN
 | |
|   gpio_init(PICO_DEFAULT_LED_PIN);
 | |
|   gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);
 | |
| #endif
 | |
| 
 | |
|   display.init();
 | |
| 
 | |
|   while(true) {
 | |
| 
 | |
| #ifdef PICO_DEFAULT_LED_PIN
 | |
|     gpio_put(PICO_DEFAULT_LED_PIN, true);
 | |
| #endif
 | |
| 
 | |
|     absolute_time_t at = get_absolute_time();
 | |
|     uint64_t t = to_us_since_boot(at) / 1000000;
 | |
| 
 | |
|     // Add a new random value to our array, overriding the oldest value
 | |
|     values[next_value] = rand() % HEIGHT;
 | |
|     next_value = (next_value + 1) % HALF_WIDTH;
 | |
| 
 | |
|     // Animate a value from 0 to height + 1
 | |
|     float value = (sinf(t * M_PI) + 1) / 2.0f;
 | |
|     value *= HEIGHT + 1;
 | |
|     value = floor(value);
 | |
| 
 | |
|     for(uint8_t y = 0; y < HEIGHT; y++) {
 | |
|       uint8_t y_inv = HEIGHT - 1 - y;
 | |
| 
 | |
|       for(uint8_t x = 0; x < HALF_WIDTH; x++) {
 | |
|         // Left
 | |
|         display.set_pixel(x, y_inv, value <= y_inv);
 | |
| 
 | |
|         // Right
 | |
|         display.set_pixel(x + HALF_WIDTH, y_inv, values[(x + next_value) % HALF_WIDTH] <= y_inv);
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     display.show();
 | |
| 
 | |
| #ifdef PICO_DEFAULT_LED_PIN
 | |
|     gpio_put(PICO_DEFAULT_LED_PIN, false);
 | |
| #endif
 | |
| 
 | |
|     sleep_ms(1000 / HEIGHT);
 | |
|   }
 | |
| 
 | |
|   return 0;
 | |
| } |