Переход с УНО на ESP32

Задумался над фоторамкой-игрушкой. Оборотная сторона модуля позволяет разместить RP2040 и аккумулятор от старого сотового на двухсторонний скотч.


…народ заграничный городит реальные рамки:


… даже с сенсорными кнопками в виде местоположений - оригинально кстати. Вот я и думаю, как простенько сделать?

… Куда то вдруг исчезли из продажи чёрные RP2040 без умного пикселя.

по моему черные как раз были с пикселем

бери уже вторую))

Не те чёрные, а эти :slight_smile:


:slight_smile: как лиловые.

я чет таких и не видел)

Нашёл, правда в одном только месте.

Ну вот, попробую вариант оргстекла.


Все остальные элементы схемы на обороте модуля экрана буду располагать, как придёт платка.
…Интересно, как попробовать сделать навигацию по фоткам, если их будет много?

А кнопочку для смены фото? Фоторамка тем и ценна что можно несколько фоток закачать и менять либо кнопкой либо по времени.

Кнопочку сенсорную…

Кнопка включения питания - перебор фоток:

#include <SPI.h>
#include "epd4in2_V2.h"
#include "imagedata.h"
void setup() {
   Epd epd;
 // epd.Init();
//
 epd.Init_4Gray();
  epd.Set_4GrayDisplay(gImage_4in2_4Gray4, 0, 0, 400, 300);
  delay(3000);
  epd.Set_4GrayDisplay(gImage_4in2_4Gray1, 0, 0, 400, 300);
  delay(3000);
  epd.Set_4GrayDisplay(gImage_4in2_4Gray3, 0, 0, 400, 300);
  delay(3000);
  epd.Set_4GrayDisplay(gImage_4in2_4Gray2, 0, 0, 400, 300);
  delay(3000);
  epd.Set_4GrayDisplay(gImage_4in2_4Gray5, 0, 0, 400, 300);
   delay(3000);
  epd.Set_4GrayDisplay(gImage_4in2_4Gray7, 0, 0, 400, 300);
   delay(3000);
  epd.Set_4GrayDisplay(gImage_4in2_4Gray6, 0, 0, 400, 300);
   delay(3000);
  epd.Set_4GrayDisplay(gImage_4in2_4Gray8, 0, 0, 400, 300);
 // epd.Clear();
//
epd.Sleep();
}

void loop() {
  // put your main code here, to run repeatedly:
}

с dithering поиграйся, с разными алгоритмами. Понаряднее картинки будут на inkpaper. Или в фотошопе, при конвертации цветной или grayscale в битмапу, поиграйся с dithering, или в той программе-конвертере, если она это позволяет.

Чудес не бывает, это предел в 4 цветах и разрешении:






Можно было ещё пробовать если бы оттенки цвета можно было менять, но ПО этого не даёт.

Я вот подумал, в принципе можно и самому написать всё как хочется и в 4 цветах если использовать экранный буфер из ОЗУ на 30 кб. То есть по аналогии с умными пикселями…
… Попробовал пока простенькую функцию на раскраску экрана заданным цветом:

#include <SPI.h>
#include "epd4in2_V2.h"
#include "imagedata.h"

unsigned char bufer[30000];// массив для данных цвета пикселей экрана
 Epd epd;
void setup() {
 /////////////////////
 epd.Init_4Gray();
 epd.Set_4GrayDisplay(gImage_4in2_4Gray4, 0, 0, 400, 300);
  delay(2000);
 Dis_Cvet(3);
 delay(2000);
  Dis_Cvet(2);
 delay(2000);
  Dis_Cvet(1);
 delay(2000);
  Dis_Cvet(0);
 delay(2000);
 // epd.Clear();
////////////////
epd.Sleep();
}

void loop() {
  // put your main code here, to run repeatedly:
}
/////////////////////
void Buf_Ris(){//
 epd.Buf_4GrayDisplay(bufer,0,0,400,300);// самописная функция на основе штатной epd.Set_4GrayDisplay(gImage_4in2_4Gray4, 0, 0, 400, 300); 
}
/////////////////////
void Dis_Cvet(int cvet){//раскраска экрана заданным цветом
for(int k=0;k<30000;k++){
if(cvet==3){bufer[k]=0b00000000;}//белый цвет
if(cvet==0){bufer[k]=0b11111111;}//чёрный цвет
if(cvet==2){bufer[k]=0b01010101;}//светло-серый цвет
if(cvet==1){bufer[k]=0b10101010;}// тёмно-серый цвет    
}
Buf_Ris();  
}
/////////////////////

В моём случае трудности, видимо, будут с сопоставлением координат пикселей и адресацией бит в байты массива-буфера.

@lilik, думаю Вам понравится – очень милая игрушка.

Я, наверное, уже безнадёжен. Кто что видит в этой “Бумажной электронике”, а я на 11-й секунде надпись на обороте: “Вы держите в руках необычную подделку”.

Здесь скорее игра слов - бумажная электроника - электронная бумага.
…Посмотрел на 11 секунде, и правда подделку написано :slight_smile:

Собрал фоторамку - двухсторонний скотч на мягкой основе удобная вещь.

а батарею то ты как заряжаешь?


Через разъём, если понадобится.

а я гадаю, че за диод он туда влепил)))

Ну влепить можно было бы модуль часов, но с односторонним монтажом элементов не нашёл.