Posts tagged ‘weihnachten’

 

Xmas 2014

Xmas 2014

Wir wünschen unseren Kunden, Geschäftspartnern und Mitarbeitern eine besinnliche Weihnachtszeit, ein Frohes Fest und einen guten Rutsch ins Jahr 2015.

Betriebsruhe zum Jahreswechsel

Bestellungen, die bis zum 22.12.2014 um 10:00 Uhr bei uns eingegangen und bezahlt sind, werden noch an diesem Tag verschickt. Spätere Bestellungen werden erst Anfang Januar bearbeitet.

Dein Agile-Hardware-Team

Versand zum Jahreswechsel

Versand zum Jahreswechsel

Weihnachten und Silvester stehen vor der Tür. Um am 24. nicht ohne Geschenk unterm Weihnachtsbaum zu stehen, ist auch bei uns ein rechtzeitiges Bestellen nötig.

Bestellungen, die bis zum 20.12.2013 11:00 Uhr vollständig (*) bei uns eingegangen sind, gehen noch vor unserer Betriebsruhe (21.12.2013 bis 05.01.2014) zum Versand. Typischweise dauert der Versand in Deutschland 1 bis 2 Tage, innerhalb Europas auch doppelt oder dreimal so lange.

Wer auf Nummer sicher gehen will und aus der Region Dresden ist, kann seine Bestellung auch bis 17:00 Uhr selbst in unserem CoworkingSpace CoFab abholen und ggf. auch bar zahlen.

Wir wünschen Euch allen ein Frohes Fest und einen Guten Rutsch ins Jahr 2014.

Euer Agile-Hardware-Team

* vollständig bedeutet: Wir haben das Geld bereits (Zahlung per Vorkasse oder Paypal) oder der Versand erfolgt per Nachnahme.

Erstes Arduino Board von Intel

Erstes Arduino Board von Intel

Wow, was für ein Paukenschlag! Intel hat ein erstes Board für das Arduino-Universum vorgestellt: Intel Galileo. Lecker!

Vorhin erst wurde es verkündet. Und was man bisher über das Board erfahren konnte, hat es das Zeug zum Renner: Kompatibel zu 3,3V und 5V- Shields, Ethernet, Leistung satt, RAM satt, … (alle Infos natürlich unter Vorbehalt).

http://www.intel.com/content/www/us/en/do-it-yourself/galileo-maker-quark-board.html

Dieser Schritt von Intel bedeutet viel für uns Maker: Zum einen ist er eine Anerkennung für die ganze Community. Vor allem wird dadurch aber ein großer Schub ausgelöst, der die Akzeptanz fördert und im Endeffekt die Preise für noch mehr Leute attraktiv macht. Ein guter Tag auch für das Internet der Dinge (Internet of Things; IoT). Ist etwa schon Weihnachten?

Apropos: Das Galileo-Board soll noch vor Weihnachten erhältlich sein. Wir sind schon in der Spur, um das für unsere Kunden möglich zu machen. Es könnte knapp werden, aber wir versuchen es. Stay tuned.

Arduino YUN und Arduino Robot

Arduino YUN und Arduino Robot

Lange haben wir sie erwartet, jetzt sind sie endlich eingetroffen:

Arduino YUN: Der erste Arduino mit einem embedded Linux. Ideal fuer Projekte mit etwas komplexeren Netzwerk-Protokollen.

Arduino Robot: Der erste Arduino mit Raedern. Ideal als Weihnachtsgeschenk für kleine und große Tüftler.

Das Ende?

Nein, natürlich nicht! Aber alle Bestellungen, die in den folgenden Tagen eingehen, werden erst im neuen Jahr bearbeitet.

Ganz aktuell (am 21.12.2012) hier auch noch unser Beitrag zum Maya-Kalender:

Zum Einsatz kamen dabei vier der brandneuen (wie passend) LED-Boards und ebenso viele LED-Matrix-Controller von SolderLab und natürlich der Glediator.

Wir bedanken uns bei unseren Kunden und Geschäftspartnern für ein tolles Jahr 2012 und freuen uns auf das, was 2013 auf uns wartet. Neue Produkte, schon im Februar ein weiterer Arduino Open Space, … es geht gut los!

Euch allen ein Frohes Fest und einen Guten Rutsch ins neue Jahr.

Das Agile-Hardware-Team

Race-Condition beim Arduino Due

Aus dem Alltag eines Shop-Betreibers:

Der Arduino Due ist begehrt. Gestern haben zwei Kunden innerhalb von wenigen Sekunden unsere letzten vorrätigen Exemplare gekauft. (Natürlich haben wir längst nachbestellt.)

Sehr spannend. In der IT nennen wir das Race-Condition, denn beide Kunden waren zeitgleich im Shop. Beide hatten offenbar die Verfügbarkeitsprüfung schon hinter sich.

Leider nimmt der Shop in dieser Situation offenbar Bestellungen an, die über den Lagerbestand hinausgehen. Das wollten wir eigentlich vermeiden. Nun können wir dem zweiten Besteller leider nicht gleich so viele Exemplare schicken, wie er gern gehabt hätte. Das tut uns leid und wir haben ihm das natürlich längst mitgeteilt und eine Änderung der Bestellung angeboten. Alternativ schicken wir die weiteren Exemplare auf unsere Kosten hinterher, sobald wir sie haben.

Das ist unangenehm für den Kunden und für uns. Aber wir gehen offen damit um und bearbeiten die Bestellungen strickt nach Bestelleingang. Fair Play wird sich auf lange Sicht auszahlen.

Nicht zuletzt gehen wir davon aus, dass sich die Verfügbarkeit der Arduino Due stark verbessern wird. So wie es mit jedem neuen Arduino-Produkt war. Auch der Arduino Leonardo (mit Header) und das Arduino Wifi-Shield waren kurz nach Erscheinen nur schwer verfügbar. Inzwischen haben wir da einen Lagerbestand, der wohl auch über Weihnachten nicht aufgebraucht wird.

Adventskalender mit Arduino und LED-Matrix

Adventskalender mit Arduino und LED-Matrix

Weihnachten steht vor der Tür, in den Kaufhäusern und Supermärkten ist das Thema sehr präsent und auch wir können uns dem nicht entziehen. Aber wir können es anders angehen.

Wir möchten in diesem Artikel 24 kleine weihnachtliche Animationen für die 16×32 LED-Matrix von Sure Electronics vorstellen. Der Quelltext wird in den kommenden Tagen immer wieder ergänzt.

Nachtrag: Bis zum Nikolaustag gibt es schon was zu sehen.

Download des aktuellen Standes (noch in Entwicklung)

Idee: Wer mag, kann ja eine Echtzeituhr oder einen DCF77-Empfänger anschliessen, um ggf. automatisch auf die neue Animation umzuschalten.

Hardware:

Quelltext:

#include "matrix_32x16xRG.h"

int counter = 0;
int day     = 1;

int dayOfDecember() {
  if (counter>50) {
    day++;
    counter = 0;
    if (day >26) {
      day = 1;
    }
  }
  counter++;
  return day;
}

word ONE_CANDLE[32] = {
  0x7fff, 0x3ffc, 0x0fb0, 0x0ff0, 0x0fb0, 0x0ff0, 0x0fb0, 0x0ff0, 
  0x0fb0, 0x0ff0, 0x0fb0, 0x0ff0, 0x0fb0, 0x0ff0, 0x0fb0, 0x0ff0, 
  0x0fb0, 0x0ff8, 0x0fb8, 0x0ff8, 0x0fb8, 0x0ff8, 0x0fb0, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};

word ONE_BRANCH[32] = {
  0x0f00, 0x0300, 0x1d00, 0x0d00, 0x3400, 0x1000, 0x0000, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};

word KERZENSTAENDER[32] = {
  0x0000, 0x7ffe, 0x3ffc, 0x1ff8, 0x0ff0, 0x07e0, 0x03c0, 0x0180, 
  0x0180, 0x0180, 0x0180, 0x0180, 0x0180, 0x03c0, 0x17e8, 0x27e4, 
  0x27e4, 0x27e4, 0x1ff8, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 
  0x03c0, 0x03c0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
};

word SCHNEEMANN[32] = {
  0x0000, 0x1f84, 0x2044, 0x4024, 0x4024, 0x4024, 0x2044, 0x1084, 
  0x0f04, 0x1084, 0x2044, 0x2044, 0x2044, 0x1084, 0x0f44, 0x0924, 
  0x109f, 0x109f, 0x1080, 0x0f00, 0x3fc0, 0x0f00, 0x0f00, 0x0f00, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 
//  0x0008, 0x021c, 0x0708, 0x2200, 0x7002, 0x2087, 0x01c2, 0x0080 
};

word SCHNEEFLOCKEN[32] = {
  0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x1540, 0x3260, 0x0a80,
  0x2720, 0x5dd0, 0x2720, 0x0a80, 0x3260, 0x1540, 0x0200, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0200, 0x1540, 0x3260, 0x0a80, 0x2720, 
  0x5dd0, 0x2720, 0x0a80, 0x3260, 0x1540, 0x0200, 0x0000, 0x0000 
}; 

word EISENBAHN[32] = {
  0x1f00, 0x3100, 0x7900, 0x3100, 0x1100, 0x1100, 0x1100, 0x1100,
  0x3100, 0x7900, 0x3100, 0x1f00, 0x0800, 0x1c00, 0x0c00, 0x1ffc, 
  0x1004, 0x30f4, 0x7894, 0x78f4, 0x3004, 0x1ffc, 0x1081, 0x1083, 
  0x108e, 0x30f4, 0x78f0, 0x7880, 0x3080, 0x1080, 0x1f80, 0x0000 
}; 

word GLOCKE[32] = {
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4000, 0x2000, 0x1000,
  0x0c00, 0x4200, 0x6100, 0x70c0, 0x5820, 0x4e18, 0x47c4, 0x41f2, 
  0x583e, 0xdf0f, 0xdf0f, 0x583c, 0x41f0, 0x47c0, 0x4e00, 0x5800, 
  0x7000, 0x6000, 0x4000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 
}; 

word STERNE[32] = {
  0x0000, 0x2008, 0x3018, 0x3838, 0x1ef0, 0x1ff0, 0x0fe0, 0x0fe0,
  0x0fe0, 0x3ff8, 0x7ffc, 0x07c0, 0x0380, 0x0180, 0x0080, 0x0000, 
  0x0000, 0x2008, 0x3018, 0x3838, 0x1ef0, 0x1ff0, 0x0fe0, 0x0fe0, 
  0x0fe0, 0x3ff8, 0x7ffc, 0x07c0, 0x0380, 0x0180, 0x0080, 0x0000 
};  

word SCHLITTEN[32] = {
  0x0000, 0x0000, 0x0000, 0x4200, 0x4200, 0x43e0, 0x43e0, 0x7fe8,
  0x43f0, 0x43f0, 0x43e8, 0x47e0, 0x4200, 0x43fa, 0x43fc, 0x43fc, 
  0x43fa, 0x4200, 0x43f0, 0x43f4, 0x7ff8, 0x43f8, 0x43f4, 0x43f0, 
  0x4200, 0x4300, 0x4180, 0x6080, 0x3180, 0x1f00, 0x0e00, 0x0000 
};  

word HIRSCHE[32] = {
  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x7e00, 0x7e10,
  0x0e20, 0x0f20, 0x7fa0, 0x7ff0, 0x0fd8, 0x00c0, 0x0080, 0x0000, 
  0x0000, 0x0000, 0x0000, 0x0000, 0x0400, 0x7e00, 0x7e10, 0x0e20, 
  0x0f20, 0x7fa0, 0x7ff0, 0x0fd8, 0x00c0, 0x0080, 0x0000, 0x0000 
};  

word NIKOLAUSSTIEFEL[32] = {
  0x0000, 0x7fbe, 0xffff, 0x8001, 0x8001, 0x8001, 0x8081, 0x4101,
  0x3e01, 0x0101, 0x0081, 0x0081, 0x0041, 0x0041, 0x0041, 0x007f, 
  0x0081, 0x0081, 0x0081, 0x0077, 0x0149, 0x0229, 0x0419, 0x0209, 
  0x011f, 0x0ea0, 0x0240, 0x0200, 0x0000, 0x0000, 0x0000, 0x0000 
};

word WEIHNACHTSBAUM[32] = {
  0x0000, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0xffff, 0x7ffe,
  0x7ffe, 0x3ffc, 0x1ff8, 0x7ffe, 0x3ffc, 0x1ff8, 0x0ff0, 0x3ffc, 
  0x1ff8, 0x0ff0, 0x07e0, 0x1ff8, 0x0ff0, 0x07e0, 0x03e0, 0x03e0, 
  0x01c0, 0x01c0, 0x0080, 0x0080, 0x0000, 0x0000, 0x0000, 0x0000 
};

word FLAME_PIXELS[] = {
                  0x1e08, 
          0x1d07, 0x1d08,
          0x1c07, 0x1c08,
  0x1b06, 0x1b07, 0x1b08, 0x1b09, 
  0x1a06, 0x1a07, 0x1a08, 0x1a09, 
  0x1906, 0x1907, 0x1908, 0x1909, 
          0x1807, 0x1808,
};

word FLAME_SMALL_PIXELS[] = {
                  0x1e08, 
          0x1d07, 0x1d08,
          0x1c07, 0x1c08,
          0x1b07, 0x1b08, 
          0x1a07 
};

int FLAME_COLORS[] = {
  COLOR_RED,
  COLOR_YELLOW,
  COLOR_YELLOW,
  COLOR_YELLOW,
  COLOR_NONE
};

void drawSprite(word bits32x16[], int offsetX, int offsetY, int color) {
  word bits;
  int  x;
  
  for (int indexX=0; indexX<32; indexX++) {
    bits = bits32x16[indexX];
    x    = indexX + offsetX;
    for (int y=offsetY; y<16+offsetY; y++) {
      if (bits & 0x0001) {
        plot(x, y, color);
      } // no else
      bits = bits >> 1;
    }
  }
} 

void drawRandom(word posXY[], int sizePosXY, int colors[], int sizeColors) {
  int x, y;
  
  for (int index=0; index<sizePosXY; index++) {
    x = (posXY[index] >> 8);
    y = (posXY[index] & 0x00ff);
    plot(x, y, colors[random(sizeColors)]);
  }
} 


void dec01() {
  for(int i=0; i<32; i++) {
    plot( random(32),  random(16), random(4));
  }
}

void dec02() {
  drawSprite(ONE_CANDLE, 0, 0, COLOR_RED);
  drawSprite(ONE_BRANCH, 0, 0, COLOR_GREEN);
  drawRandom(FLAME_PIXELS, sizeof(FLAME_PIXELS)/2, FLAME_COLORS, sizeof(FLAME_COLORS)/2);
}

void dec03() {
  drawSprite(KERZENSTAENDER, 0, 0, COLOR_RED);
  drawRandom(FLAME_SMALL_PIXELS, sizeof(FLAME_SMALL_PIXELS)/2, FLAME_COLORS, sizeof(FLAME_COLORS)/2);
}

void dec04() {
  for(int i=0; i<32; i++) {
    plot( random(32),  random(16), random(4));
  }
  drawSprite(GLOCKE, 0, 0, COLOR_YELLOW);
}

void dec05() {
  drawSprite(SCHNEEMANN, 0, 0, COLOR_YELLOW);
  for(int i=24; i<32; i++) {
    plot( 24+random(8),  random(16), random(4));
  }
}

int offset = -16;

void dec06() {
  drawSprite(NIKOLAUSSTIEFEL, 0, 0, COLOR_RED);
}

void dec07() {
  for(int i=0; i<8; i++) {
    plot( random(32),  random(16), random(4));
  }
  drawSprite(SCHNEEFLOCKEN, random(2), offset, COLOR_RED);
  offset++;
  if (offset>16) {
    offset = -16;
  }
  delay(50);
}

void dec08() {
}

void dec09() {}
void dec10() {}
void dec11() {}
void dec12() {}
void dec13() {}
void dec14() {}
void dec15() {}
void dec16() {}
void dec17() {}
void dec18() {}
void dec19() {}
void dec20() {}
void dec21() {}
void dec22() {}
void dec23() {}
void dec24() {}

void setup() {
  matrixSetup(ATS_CS_PIN, ATS_WRCLK_PIN, ATS_DATA_PIN, ATS_CLK_PIN);
}


void loop() {
  int day;
  
  day = dayOfDecember();
  
  switch (day) {
    case  1: dec01(); break; 
    case  2: dec02(); break; 
    case  3: dec03(); break; 
    case  4: dec04(); break; 
    case  5: dec05(); break; 
    case  6: dec06(); break; 
    case  7: dec07(); break; 
    case  8: dec08(); break; 
    case  9: dec09(); break; 
    case 10: dec10(); break; 
    case 11: dec11(); break; 
    case 12: dec12(); break; 
    case 13: dec13(); break; 
    case 14: dec14(); break; 
    case 15: dec15(); break; 
    case 16: dec16(); break; 
    case 17: dec17(); break; 
    case 18: dec18(); break; 
    case 19: dec19(); break; 
    case 20: dec20(); break; 
    case 21: dec21(); break; 
    case 22: dec22(); break; 
    case 23: dec23(); break; 
    case 24: dec24(); break;
    default : break;// do nothing (except waiting for xmas)
  }
  
  nextImage(10);
}