Возьми самое простое - кнопка и светодиод. Куча кнопок и куча светодиодов. При нажатии кнопок светики загораются в разных комбинациях с разной яркостью с плавным загоранием и затуханием , мигают по разному - комбинаций можно придумать кучу. Можно поиграться и с кнопками - короткое нажатие, длительное, удержание, двойной клик, одновременное нажатие нескольких кнопок. Для мозгов очень полезно, да и интересно. Да ещё и в будущем пригодится однозначно.
Где результаты ? а то есть очень простая и нужная идея - крышка мусорного ведра открывается про приближении к ней. главное использовать в проекте комплектацию из Амперки. Думаю не у всех дома сенсорные ведра имеются.
Проект сделал. За большую задержку извиняюсь , не хватало времени. Почему надо было использовать детали имено из Амперки? P.S.видео будет по позже
А сможете написать скетч для уно, лсд шилд сенсорный,нарисовать на нем 3 кнопки и чтоб они включали и выкл. 3 реле? #include <SPFD5408_Adafruit_GFX.h> #include <SPFD5408_Adafruit_TFTLCD.h> #include <SPFD5408_TouchScreen.h> #if defined(__SAM3X8E__) #undef __FlashStringHelper::F(string_literal) #define F(string_literal) string_literal #endif // Pines necesarios para los 4 pines del panel tactil #define YP A1 // Pin analogico A1 para ADC #define XM A2 // Pin analogico A2 para ADC #define YM 7 #define XP 6 // Definimos la presion máxima y minima que podemos realizar sobre el panel #define MINPRESSURE 10 #define MAXPRESSURE 1000 // Para mejor precision de la presion realizada, es necesario // medir la resistencia entre los pines X+ y X-. // En Shield TFT 2.4" LCD se mide entre los pines A2 y 6 // Instancia del panel tactil (Pin XP, YP, XM, YM, Resistencia del panel) TouchScreen ts = TouchScreen(XP, YP, XM, YM, 550); #define TS_MINX 120 #define TS_MINY 115 #define TS_MAXX 945 #define TS_MAXY 900 #define LCD_CS A3 // Definimos los pines del LCD #define LCD_CD A2 // para poder visualizar elementos graficos #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4 #define BLACK 0x0000 // Definimos los colores #define BLUE 0x001F // que utilizaremos para #define RED 0xF800 // el texto y los elementos graficos #define GREEN 0x07E0 #define CYAN 0x07FF #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Instancia LCD int X; // Variables que almacenaran la coordenada int Y; // X, Y donde presionemos y la variable Z int Z; // almacenara la presion realizada int a = 0; // variable "flag" para control rebotes #define ledA 8 // Anodo del led conectado pin digital 5 #define ledK 9 // Catodo del led conectado pin digital 3 void setup(void) { tft.begin(0x9341); // Iniciamos el LCD especificando el controlador ILI9341. tft.setRotation(1); tft.fillScreen(WHITE); // Pintamos la pantalla de Rojo pinMode(13, OUTPUT); pinMode(ledA,OUTPUT); pinMode(ledK, OUTPUT); tft.drawRect(10, 10, 140, 60, WHITE); // Dibujamos un "boton" tft.setCursor(50,25); // Colocamos el cursor tft.setTextSize(4); // Especificamos el tamaño del texto tft.setTextColor(WHITE ); // Definimos el color del texto tft.println("OFF"); // Escribimos por pantalla } void loop() { lecturaPanel(); // Realizamos lectura del panel para detectar presion y coordenadas // Si la pulsación del eje X se produce entre los puntos 40 y 160 // Y la pulsacion del eje Y se produce entre los puntos 20 y 60 // Y la presión realizada esta entre el margen determinado if((X > 10 && X < 150) && (Y > 10 && Y < 70) && (Z > MINPRESSURE && Z < MAXPRESSURE)) { if (a == 0) // Si la variable flag esta en 0 { tft.fillRect(10, 10, 140, 60, CYAN); // Dibujamos nuestro boton relleno de color tft.setCursor(50,25); // Colocamos el cursor tft.setTextSize(4); // Especificamos el tamaño del texto tft.setTextColor(WHITE ); // Definimos el color del texto tft.println("OFF"); // Escribimos por pantalla //AQUI REALIZAMOS LA ACCION QUE DESEEMOS: ENCENDER EL LED digitalWrite(ledA, HIGH); digitalWrite(ledK, LOW); a = 1; // Ponemos la variable flag en 1 delay(200); } else if (a == 1) // Si la variable flag esta en 1 { tft.fillRect(10, 10, 140, 60, MAGENTA); // Dibujamos el fondo de nuestro boton en cyan tft.setCursor(50,25); // Colocamos el cursor tft.setTextSize(4); // Especificamos el tamaño del texto tft.setTextColor(WHITE); // Definimos el color del texto tft.println("ON"); // Escribimos por pantalla //AQUI REALIZAMOS LA ACCION QUE DESEEMOS: APAGAR EL LED digitalWrite(ledA,LOW); digitalWrite(ledK, LOW); a = 0; // Ponemos la variable flag en 0 para evitar los rebotes delay(150); } } } void lecturaPanel() { digitalWrite(13, HIGH); TSPoint p = ts.getPoint(); // Realizamos lectura de las coordenadas digitalWrite(13, LOW); pinMode(XM, OUTPUT); // La librería utiliza estos pines como entrada y salida pinMode(YP, OUTPUT); // por lo que es necesario declararlos como salida justo // despues de realizar una lectura de coordenadas. // Mapeamos los valores analogicos leidos del panel tactil (0-1023) // y los convertimos en valor correspondiente a la medida del LCD 320x240 X = map(p.x, TS_MAXX, TS_MINX, tft.width(), 0); Y = map(p.y, TS_MAXY, TS_MINY, tft.height(), 0); Z = p.z; } вот один диод вкл. и выкл.а как сделать для 3 диодов или реле и 3 таких кнопки?