commit c0dfeeb7c4826696717e612cc58d88b6cb1c7f61 Author: Barb Date: Fri Jan 13 18:46:40 2023 +0100 first commit diff --git a/GeneratoreRandom_di_Bestemmie.ino b/GeneratoreRandom_di_Bestemmie.ino new file mode 100644 index 0000000..9d609dd --- /dev/null +++ b/GeneratoreRandom_di_Bestemmie.ino @@ -0,0 +1,113 @@ +#include + +int D = 0; // Pointer Divinità in array +int I = 0; // Pointer Insulto in array +int agender = 0; // Variable to select non-gendered insults +int Gender = 1; // Variable to store gender +int ratio = 1; // Ratio between gendered/non-gendered insults +unsigned int strlength = 1; // Variable to store Length of individual insult +String Riga1 = "A"; // String to print for Divinità +String Riga2 = "B"; // String to print for insult +char *DivinitaF[] = { "Madonna", "Eva", "Maria", + "Maria Benedetta", "MadonnaImpestata", "Madre Teresa", + "Porcamadonna", "Maria Maledetta", + }; +char *DivinitaM[] = { "Dio", "Giuseppe", "San Giuseppe", + "Gesu'", "Cristo", "Papa Francesco", + "Papa Nazingher", "Gesu' Cristo", "DioBestia", + "Iddio", "Padre Eterno", "Porcoddio", + "Dio Serpente", "Giuda", "Porco il Clero", + "Adamo", + }; +char *InsultiFM[] = {"Sparata", "Arrestata", "Smerdata", + "Porca", "Stronza", "Galeotta", + "Merdosa", "Lurida", "Mafiosa", + "Ladra", "Carbonizzata", "Sciolta", + "Sudicia", "Assassina", "Sotterrata", + "Scoppiata", "Ingessata", "Pietrificata", + "Diavola", "Lupa", "Incazzata", + "Inviperita", "Marcia", "Infangata" + "Scatenata", "Piena", "Avvelenata", + "Sbronza", "Radioattiva", "Pisana", + "Cogliona", "Velenosa", "Ammazzata", + "Fascista Appesa", "Lebbrosa", "Drogata", + "Smutandata", "Catafratta", "Pisana", + "Infangata", "Asfaltata", "Scivolata", + "Inchiodata", "Decaffeinata", "Slurdata", + "Viscida", "Gonfia", "Nana", + }; +char *InsultiA[] = { "Cane", "A Pedali", "C'ho Fame!", + "Chepppalle!", "In croce", "con la diarrea", + "Terrorista", "Camorrista", "Infame", + "In fiamme", "Fascista", "Boia", + "Frittata", "Biscia", "in Carriola", + "Missile", "Serpente", "Maiale", + "Autostoppista", "Lontra", "Merda", + "Verme", "Infame", "Agghiacciante", + "Cinghiale", "Camorrista", "Atomo", + "Bengala", + }; + +int DFSize = sizeof(DivinitaF) / sizeof(DivinitaF[0]); // Automatically calculate size of arrays based on string lenght +int DMSize = sizeof(DivinitaM) / sizeof(DivinitaM[0]); +int IFMSize = sizeof(InsultiFM) / sizeof(InsultiFM[0]); +int IASize = sizeof(InsultiA) / sizeof(InsultiA[0]); + +// LCD pins <--> Arduino pins +const int RS = 11, EN = 12, D4 = 2, D5 = 3, D6 = 4, D7 = 5; +LiquidCrystal lcd(RS, EN, D4, D5, D6, D7); + +void setup() +{ + ratio = 100*IFMSize/(IFMSize + IASize); //(The smallest IASize, the slimmenst the chance to pick from corresponding array) + // Setup LCD and print boot messages once + lcd.begin(16, 2); // set up number of columns and rows + lcd.setCursor(0, 0); // move cursor to (0, 0) + lcd.print("GeneratoreRandom"); + lcd.setCursor(0, 1); // move cursor to (0, 1) + lcd.print("Di Bestemmie 1.1"); + delay(5000); + lcd.clear(); // Clear LCD before re-draw + lcd.setCursor(0, 0); // move cursor to (0, 0) + lcd.print("by AulaStud"); + lcd.setCursor(0, 1); // move cursor to (0, 1) + lcd.print("2022"); + delay(2000); + +} + +void loop() +{ + lcd.clear(); // Clear LCD at every cycle + Gender = random(1, 3); // Randomly pick F/M as 1 or 2. generate from 1 to n+1 where n is the desired maximum + if (Gender == 1) { // Check what group has been picked (F/M) + D = random(1, DFSize); // Randomply pick string in array; from 1 to n+1 where n is the desired maximum + Riga1 = DivinitaF[D]; // Fill lines that will be printed to LCD + } + else if (Gender == 2) { // Check what group has been picked (F/M) + D = random(1, DMSize); + Riga1 = DivinitaM[D]; // Fill lines that will be printed to LCD + } + agender = random(1, 101); + if (agender < ratio) { // Extra option to pick Non-gendered insults + I = random(1, IASize); + Riga2 = InsultiA[I]; // Fill lines that will be printed to LCD + } + else { // else pick insult and change gender + I = random(1, IFMSize); + Riga2 = InsultiFM[I]; // Fill lines that will be printed to LCD + } +lcd.setCursor(0, 0); // move cursor to (0, 0) +lcd.print(Riga1); // Print Line1 +lcd.setCursor(0, 1); // move cursor to (0, 1) +lcd.print(Riga2); // Print Line2 + if (Gender == 2 && agender >= ratio) { + strlength = Riga2.length() - 1; // get length of current insult string + lcd.setCursor(strlength, 1); // move cursor to end of insult + lcd.print("o"); // print final letter over end of line2 to change F to M + } + delay(5000); // Delay 5s before next cycle + agender = 3; // Reset variable + Riga1 = ""; // Clear strings, or characters will overlap sometimes + Riga2 = ""; +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..ef7bcd1 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +Funny gadget that uses an Arduino Uno or compatible + 16x2 LCD to generate Bestemmie. +Very important stuff. + +Made by Barb for AulaStudendti del Polo, 2022