Опыты –> Эксперименты с Arduino часть 3

Третий опыт с Arduino. В данной мини-лекции мы узнаем, как проигрывать при помощи Arduino простейшие мелодии, а также закрепим материал предыдущих двух уроков.
PICT0002

Для опытов была создана экспериментальная платформа под кодовым названием “Щячло”. Это игрушка Furby из Макдональдса с кое-какими принципиальными доработками. В глаза ей были вставлены два мощных светодиода (пожалуй, слишком мощных, не жадничайте, как я и не покупайте светодиоды на 30000 мКд, а то в глазах после опытов будут плясать зайчики) . В щячло к Щячлу был вмонтирован фоторезистор,  а в хвостовой части – стоит динамик (впрочем, он находился там и в прошлой инкарнации Furby).

PICT0004

Итак, суть опыта такова: имеется некоторый уровень освещенности от настольной лампы, и если мы её выключим – сработает фотодатчик и игрушка начнёт играть мелодию, а также в такт “мигать” глазами.

Мелодия выбрана с намёком на “Космическую Одиссею” Стэнли Кубрика и Артура Кларка. Да и 2010 год в конце-то концов. Кстати знаете ли вы, почему HAL-9000 пел именно Daisy Daisy, когда Дэйв вытаскивал из него один за другим модули памяти? [узнайте]

Мне очень важны ваши комментарии, так что не стесняйтесь, пишите.

Исходный код для данного примера. Прокомментированный и даже разукрашенный.

int speakerPin = 9; // выход для динамика
int leftEye= 10; // левый светодиод
int rightEye=11; // правый светодиод
int photoPin = 0; // аналоговый вход для фоторезистора
int val = 0; // переменная для значения считанного с аналогового входа

// ноты мелодии
char notes[] = "GECgabCaCg DGECabCDED EFEDGEDC CECaCag gCEDgCEDEFGECDgC "; // пробел - это пауза
// длительность для каждой ноты и паузы
int beats[] = { 4, 4, 4, 4, 1, 1, 1, 2, 1, 4,
        2, 4, 4, 4, 4, 1, 1, 1, 2, 1,
        4, 2, 1, 1, 1, 1, 2, 1, 1, 4,
        2, 1, 2, 1, 2, 1, 1, 4, 2, 1,
        2, 1, 2, 1, 2, 1, 2, 1, 1, 1,
        1, 1, 2, 1, 4, 4, 4} ;

int tempo = 200; // темп исполнения
int length = sizeof(notes); // количество нот


void playTone(int tone, int duration) {
digitalWrite(leftEye,HIGH); // зажигаем оба глаза
digitalWrite(rightEye,HIGH); 
 // проигрываем требуемую ноту с нужной частотой и длительностью
 for (long i = 0; i < duration * 1000L; i += tone * 2) {
  digitalWrite(speakerPin, HIGH);
  delayMicroseconds(tone);
  digitalWrite(speakerPin, LOW);
  delayMicroseconds(tone);
}
digitalWrite(leftEye,LOW); // гасим оба глаза
digitalWrite(rightEye,LOW);  
 
}

void playNote(char note, int duration) {
 // массив для наименований нот (до ре ми ... и т.д. в пределах двух октав)
 char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C','D','E','F','G','A','B' };
 // соответствующие нотам частоты
 int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956, 850, 759, 716, 638, 568, 507 };

 // выбор частоты по наименованию ноты
 for (int i = 0; i < 15; i++) {
  if (names[i] == note) {
   playTone(tones[i], duration);
  }
}
}

void setup() {
pinMode(speakerPin, OUTPUT);// цифровые выводы на динамик
pinMode(leftEye, OUTPUT);  // и оба светодиода
pinMode(rightEye, OUTPUT); // конфигурируем как выходы
pinMode(photoPin, INPUT);  // а с фоторезистором - как вход
}

void loop() {
// считываем значение с фотодатчика
val = analogRead(photoPin);  
// небольшая задержка для регенерации АЦП
delay(10);
if (val>1020) { // если значение превысило предел (стало темно) - запускаем цикл проигрывания мелодии
 for (int i = 0; i < length; i++) { //
   if (notes[i] == ' ') {
    delay(beats[i] * tempo); // пауза
   } else {
    playNote(notes[i], beats[i] * tempo); // либо проигрываем соответствующую ноту
   }
  // небольшая пауза между нотами
  delay(tempo / 2);
  }
}
}


* This source code was highlighted with Source Code Highlighter.

Опыты –> Шуруподвигатель, или сеанс электромагнитной магии с последующим разоблачением.

Я вот тут Youtube посматриваю. И увидел один опыт, который просто обязан был повторить. Всего нужно 4 вещи – батарейка, проводок, шуруп (или гвоздик) и круглый неодимовый мощный магнитик.

Так почему же оно крутится?

Не до конца уверен в точности описания и терминологии, но заявляю, что – этот опыт является простой и наглядной иллюстрацией Силы Лоренца и закона магнитной индукции.

Поскольку ток течет по кратчайшему пути – по радиусу магнита, а магнит – из редкоземельного металла (с керамическим такая штука не выйдет) – то на каждый заряд внутри будет действовать сила Лоренца. Вектор её будет направлен параллельно касательной в точке соприкосновения проводка и магнита.

В пользу этого говорит также, что при перевороте магнитика (сверху был северный а снизу южный полюс, перевернули – стало наоборот) или при смене полюсов батарейки система начинает крутиться в другую сторону.

А какие простые опыты с магнитиками и электричеством знаете вы?

Опыты –> Эксперименты с Arduino часть 2

Продолжаем опыты с Arduino.

В этом пятиминутном видеоуроке мы познакомимся с тем, как работает аналоговый вход в Arduino, подключим к Arduino фоторезистор, а также научимся извлекать звук из пьезодинамика. Результатом будет простейшая система охранной сигнализации, срабатывающая при прерывании светового потока (от настольной лампочки).

Исходные коды программы:

int potPin = 0;    // select the input pin for the photoresistor
int speakerOut = 3; // this is the pin that the piezo element should be connected with
int val = 0;       // variable to store the value coming from the sensor
void setup() {
  pinMode(speakerOut, OUTPUT);// declare the ledPin as an OUTPUT
}
void loop() {
  val = analogRead(potPin);    // read the value from the sensor
if (val< 200){
   digitalWrite(speakerOut, HIGH);  // turn the speaker on
    delayMicroseconds(1700);                  // stop the program for some time
digitalWrite(speakerOut, LOW);  // turn the speaker off
    delayMicroseconds(1700);                  // stop the program for some time
}
}

Опыты –> Эксперименты с Arduino часть 1

Вот я подумал, чего стесняться, начинаем серию экспериментальных видеолекций про платформу Arduino (Freeduino) с микроконтроллером Atmel.  Если понравится – пишите, мне очень важно ваше мнение и вопросы. Голос за кадром – мой, извините, не Ефим Копелян, дикторскими качествами по большей части обделен, но постараюсь развиваться в этом плане.

В первой части мы вкратце знакомимся с платой Arduino и испытываем простейшую программу, которая мигает светодиодом.

Внезапно –> Arduino

ard1 ard2

Вот так, незаметно, Дед Мороз принёс мне посылочку. Я сделал даже программу, чтобы “лампочка мыгала”. Удивительно, работает!

image

Хо-хо-хо! Ребятки, я знаю, чем займусь в новогодние каникулы.

Всячина –> Люминисцентные лампы

lumin-1

Так, не забрасываем блог, хотя чото журнальные статьи сжирают мой месячный печатательный потенциал со страшной силой. А еще я беседовал с Мицголом и не ослеп. Но это будет ближе к февралю.

Что я хотел сказать-то…Вот такое объявление формата A4 я внезапно нашел у себя. Так что внедряйте и бережно расходуйте.

На самом деле,мне очень интересно, а вот светодиодные лампы в стандартный патрон уже продаются? Может где в китайском интернет-магазине можно ужо купить? А то я ненавижу энергосберегающие люминисцентные лампочки, которые мало того что отвратительным спектром обладают (и не говорите, пробовал несколько видов – все как один ужасные), дьявольски мигают с частотой 100 герц, вызывая биения на ЖК-мониторе, так еще и стоят бешеных денег и, к тому же, перегорают ничуть не реже собратьев с нитью накаливания.

------<Постовой [Как попасть?]>------

Вассерман завел стэндэлон-видеоблог. Офигительно!

Между тем меня опубликовали в журнале совсем рядом с великим Бомбре. (полнотекст здесь) Горжусь.

В этом ЖЖ нечто дико концептуально крышесносное, но пока не въехал, что именно. Медитирую.

------</Постовой>------