// **********************************************************************
// letzte Änderungen:
// Webserver aus 06.05.2015: Patch Panel aktiviert TO DO: aber irgendwie verschoben// 05.05.2015: Anpassung an Mega 2560 wg. Speicherproblemenbeim Uno
// 04.05.2015: rudimentäre Dimmfunktion
// 03.05.2015: Ausbaustufe = 32, LED #0 gibt es nicht mehr, automatisches Abschalten nach 500 Leerzyklen
// ... pro Spalte ein 8-bit-Schieberegister = 18 SR insgesamt
byte Ausbaustufe = 32;
// TO DO: vorerst ohne Patchenboolean patchmodus = 0;
// Auswahl
// Ordnungszahl definiert Element 1...118
// 255 = alles_an
boolean led[145144];unsigned int led_aus[145144];
// virtuelles Patchpanel: Zuordnung Ordungszahl/Pin, z. B. Natrium mit OZ 11 an *Pin 3*:
const byte Element_an_Pin[145144] = {
// Pinning ohne eine "Led #0"
// p1 p2p1p2*p3* p4 p5 p6 p7 p8-p9 p10 p11 p12 p13 p14 p15 p16 -p17 p18 p19 p20 p21 p22 p23 p24- 0, 1, 3, 11, 19, 37, 55, 87, 0144, 4, 12, 20, 38, 56, 88, 119, 120, 121, 122, 21, 39, 71, 103, 57, 89 //
// p25 p26 p27 p28 p29 p30 p31 p32-p33 p34 p35 p36 p37 p38 p39 p40-p41 p42 p43 p44 p45 p46 p47 p48
, 123, 124, 22, 40, 72, 104, 58, 90, 125, 126, 23, 41, 73, 105, 59, 91, 127, 128, 24, 42, 74, 106, 60, 92
//
// p49 p50 p51 p52 p53 p54 p55 p56-p57 p58 p59 p60 p61 p62 p63 p64-p65 p66 p67 p68 p69 p70 p71 p72
, 129, 130, 25, 43, 75, 107, 61, 93, 131, 132, 26, 44, 76, 108, 62, 94, 133, 134, 27, 45, 77, 109, 63, 95
//
// p73 p74 p75 p76 p77 p78 p79 p80-p81 p82 p83 p84 p85 p86 p87 p88-p89 p90 p91 p92 p93 p94 p95 p96
, 135, 136, 28, 46, 78, 110, 64, 96, 137, 138, 29, 47, 79, 111, 65, 97, 139, 140, 30, 48, 80, 112, 66, 98
//
// p97p98 p99 p100p101p102 p103p104-p105p106p107p108p109p110p111p112-p113p114p115p116p117p118p119p120
, 5, 13, 31, 49, 81, 113, 67, 99, 6, 14, 32, 50, 82, 114, 68, 100, 7, 15, 33, 51, 83, 115, 69, 101
//
//p121p122p123p124p125p126p127p128-p129p130p131p132p133p134p135 p136-p137p138p139p140p141p142p143p144
, 8, 16, 34, 52, 84, 116, 70, 102, 9, 17, 35, 53, 85, 117, 141, 142, 2, 10, 18, 36, 54, 86, 118, 143
// Element_an_Pin[] nach steigender Ordungszahl notieren:
// TO DO wg. Speicherproblemen vorerst aus:
// byte patch[145144];
byte Anzahl_angeschaltete_LEDs = 0;
int zyklus = 0; // loop-Zyklen
// Debugging
int bremse = 01; // 1 ... 60000 Standardwert für Entschleunigung in ms zwischen einigen Befehlen zwecks Debugging
// **********************************************************************
void setup() {
Dimmer(10127);// halbe Helligkeit = halbe Stromstärke
Serial.begin(9600); // Kontrollausgabe über seriellen Monitor
// Pin 5 abfragen (analog, EMK) für Zufallszahl
// randomSeed(analogRead(5));
// Pins 3, 8,9,10 auf Ausgabe
pinMode(outputEnablePin, OUTPUT); // Dimmer
// Switchen, Element_an_Pin[] nach steigender Ordungszahl merken:
// TO DO wg. Speicherproblemen vorerst aus:
// for (byte z = 1; z < 145144 + 1; z++) { // patch[Element_an_Pin[z]] = z; // // // Ordnungszahl // }
// ***********************
// Kontrolle
// }
// }
// delay(10000);
// ***********************
// TO DO: LED 0 ist eigentlich gar nicht schaltbar...
// LED Nr. 0 (Legende) immer an, ist gleichzeitig Kontrollleuchte für aktives Board:
// Led_an(0, 1);
// delay(1000);
// für Testphase LEDs im setup einschalten, später in loop:
// Element = 7; // blau
}
// **********************************************************************
// ############### Unterprogramme Funktionen nach ABC ##############################
// **********************************************************************
void Auswahl_alles_an() {
void Auswahl_Metalle() {
for (byte z = 1; z < Ausbaustufe + 1; z++) {
if ((z == 3) || (z == 4) || (z == 11) || (z == 12) || (z == 13) || ((z >= 19) && (z <= 31)) || ((z >= 37) && (z <= 50)) || ((z >= 55) && (z <= 84)) || ((z >= 87) && (z <= 118)) || (z == 133)) {
Led_an(z, 1);
}
void Auswahl_Halbmetalle() {
for (byte z = 1; z < Ausbaustufe + 1; z++) {
if ((z == 5) || (z == 14) || (z == 32) || (z == 33) || (z == 34) || (z == 51) || (z == 52) || (z == 85) || (z == 135)) {
Led_an(z, 1);
}
void Auswahl_Nichtmetalle() {
for (byte z = 1; z < Ausbaustufe + 1; z++) {
if ((z == 1) || (z == 2) || ((z >= 6) && (z <= 10)) || ((z >= 15) && (z <= 18)) || ((z >= 35) && (z <= 36)) || ((z >= 53) && (z <= 54)) || (z == 86) || (z == 137)) {
Led_an(z, 1);
}
void Auswahl_fest() {
for (byte z = 1; z < Ausbaustufe + 1; z++) {
if (((z >= 3) && (z <= 6)) || ((z >= 11) && (z <= 16)) || ((z >= 19) && (z <= 34)) || ((z >= 37) && (z <= 53)) || ((z >= 55) && (z <= 85)) || ((z >= 87) && (z <= 118))) {
Led_an(z, 1);
}
void Auswahl_gas() {
for (byte z = 1; z < Ausbaustufe; z++) {
if ((z == 1) || (z == 2) || (z == 7) || (z == 8) || (z == 9) || (z == 10) || (z == 17) || (z == 18) || (z == 36) || (z == 54) || (z == 86)) {
Led_an(z, 1);
}
void Auswahl_Programm_x() { // 201
// z. Zt. Dimmer-Test
// delay(5000); for (byte int b = 0; b < = 255; b = b + 515)
{
Dimmer(b);
Led_an(1, 1);
delay(10003000);
}
Led_an(1, 0);
}
// **********************************************************************
void Dimmer(byte brightnessHelligkeit) // 0 to 255
// Funktion merkt sich Helligkeitswert für LEDs, ausbaubedingt z. Zt. nur am 1. Schieberister
// 0 = dunkel, weil 0% Einschaltdauer, 255 = volle Leistung, weil 100% ED
{
analogWrite(outputEnablePin, 255 - brightnessHelligkeit);
}
// **********************************************************************
// TO DO: switch Element/LED, z. B. bei Element 11 (Natrium) die 3. Led schalten
// patch it:
// if (patchmodus) { Element=patch[Element]; }
zyklus = 0; // Schlafmodus beenden
Laufzeit_hhmmss();
client.println("<HEAD>");
// charset=utf-8
if (Auswahl != 222) { // TO DO: Weiterleitung vorerst aus, bei QR-Code zurücksetzen auf "if (Auswahl != 222) {" if (Auswahl != 222) {
// Weiterleitung an Elementseite auf bs-wiki:
client.print("<meta http-equiv=\"refresh\"content=\"0; URL=");
client.println("</HEAD>");
client.println("<BODY>");
// client.println("<p class='monospace'>"); // client.println("<H1>Periodensystem der Elemente</H1>"); // client.println("<hr />"); // client.println("<br />");
// client.println("<H2>Led auswählen</H2>");
// client.println("<br />");
Änderungen – BS-Wiki: Wissen teilen
Änderungen
9 Byte hinzugefügt,
00:22, 7. Mai 2015