###########################################################################
attiny85at8.name=ATtiny85 @ 8 MHz (internal oscillator; BOD disabled)
# The following do NOT work...
# attiny85at8.upload.using=avrispv2
# attiny85at8.upload.using=Pololu USB AVR Programmer
# The following DO work (pick one)...
attiny85at8.upload.using=arduino:arduinoisp
# attiny85at8.upload.protocol=avrispv2
# attiny85at8.upload.using=pololu
attiny85at8.upload.maximum_size=8192
# Default clock (slowly rising power; long delay to clock; 8 MHz internal)
# Int. RC Osc. 8 MHz; Start-up time PWRDWN/RESET: 6 CK/14 CK + 64 ms; [CKSEL=0010 SUT=10]; default value
# Brown-out detection disabled; [BODLEVEL=111]
# Preserve EEPROM memory through the Chip Erase cycle; [EESAVE=0]
attiny85at8.bootloader.low_fuses=0xE2
attiny85at8.bootloader.high_fuses=0xD7
attiny85at8.bootloader.extended_fuses=0xFF
attiny85at8.bootloader.path=empty
attiny85at8.bootloader.file=empty85at8.hex
attiny85at8.build.mcu=attiny85
attiny85at8.build.f_cpu=8000000L
attiny85at8.build.core=tiny
###########################################################################
#include <SendOnlySoftwareSerial.h> // See http://forum.arduino.cc/index.php?topic=112013.0
//SoftwareSerial Serial(1,0); // Receive, Transmit (Receive not used)
SendOnlySoftwareSerial Serial1(0); // Transmit serial on Trinket/Gemma pin GPIO #0/D0
// We need to use the 'raw' pin reading methods because timing is very important here
// and the digitalRead() procedure is slower!
#define IRpin_PIN PINB // ATTiny85 had Port B pins
#define IRpin 4
#define MAXPULSE 5000 // the maximum pulse we'll listen for - 5 milliseconds
#define NUMPULSES 50 // max IR pulse pairs to sample
#define RESOLUTION 2 // // time between IR measurements
// we will store up to 100 pulse pairs (this is -a lot-)
uint16_t pulses[NUMPULSES][2]; // pair is high and low pulse
uint16_t currentpulse = 0; // index for pulses we're storing
uint32_t irCode = 0;
void setup(void) {
Serial1.begin(9600);
Serial1.println("Ready to decode IR!");
pinMode(IRpin, INPUT); // Listen to IR receiver on Trinket/Gemma pin D2
}
void loop(void) {
uint16_t numpulse=listenForIR(); // Wait for an IR Code
// Process the pulses to get a single number representing code
for (int i = 0; i < 32; i++) {
irCode=irCode<<1;
if((pulses[i][0] * RESOLUTION)>0&&(pulses[i][0] * RESOLUTION)<500) {
irCode|=0;
} else {
irCode|=1;
}
}
printcode(); // Print IR code to softwareserial
}
void printcode(void) {
uint16_t half;
half=irCode>>16; // Get first 16 bits of code
Serial1.print("0x");
Serial1.print(half, HEX); // Print upper 16 bits in hex
Serial1.println(irCode & 0xFFFF, HEX); // print lower 16 bits in hex
}
uint16_t listenForIR() { // IR receive code
currentpulse = 0;
while (1) {
unsigned int highpulse, lowpulse; // temporary storage timing
highpulse = lowpulse = 0; // start out with no pulse length
while (IRpin_PIN & _BV(IRpin)) { // got a high pulse
highpulse++;
delayMicroseconds(RESOLUTION);
if (((highpulse >= MAXPULSE) && (currentpulse != 0))|| currentpulse == NUMPULSES) {
return currentpulse;
}
}
pulses[currentpulse][0] = highpulse;
while (! (IRpin_PIN & _BV(IRpin))) { // got a low pulse
lowpulse++;
delayMicroseconds(RESOLUTION);
if (((lowpulse >= MAXPULSE) && (currentpulse != 0))|| currentpulse == NUMPULSES) {
return currentpulse;
}
}
pulses[currentpulse][1] = lowpulse;
currentpulse++;
}
}
1 0xC03FDA25
2 0xC03FE619
3 0xC03FEC13
4 0xC03FCC33
5 0xC03FC639
6 0xC03FDEA1
7 0xC03FC43B
8 0xC03FCE31
9 0xC03FD6A9
0 0xC03FD2AD
* 0xC03FD0AF
# 0xC03FD4AB
left 0xC03FC8B7
up 0xC03FD8A7
right 0xC03FF08F
down 0xC03FEA15
ok 0xC03FC0BF
#include <SendOnlySoftwareSerial.h>
#define IR_CODE_PIN PINB
#define IR_PIN 4
#define LED_PIN 1
#define SERIAL_PIN 0
#define MAXPULSE 5000 // the maximum pulse we'll listen for - 5 milliseconds
#define NUMPULSES 100 // max IR pulse pairs to sample
#define RESOLUTION 2 // time between IR measurements
uint16_t pulses[100][2];
uint16_t currentpulse = 0;
uint32_t irCode = 0;
SendOnlySoftwareSerial MySerial(SERIAL_PIN);
void setup() {
MySerial.begin(9600);
pinMode(IR_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
}
void loop() {
irCode=listenForIR(); // Wait for an IR Code
// Process the pulses to get our code
for (byte i = 0; i < 32; i++) {
irCode=irCode<<1;
if((pulses[i][0] * RESOLUTION)>0&&(pulses[i][0] * RESOLUTION)<500){
irCode|=0;
}else{
irCode|=1;
}
}
digitalWrite(LED_PIN, HIGH);
switch(irCode){
case 0xC03FDA25: MySerial.write('1');break;
case 0xC03FE619: MySerial.write('2');break;
case 0xC03FEC13: MySerial.write('3'); break;
case 0xC03FCC33: MySerial.write('4'); break;
case 0xC03FC639: MySerial.write('5'); break;
case 0xC03FDEA1: MySerial.write('6'); break;
case 0xC03FC43B: MySerial.write('7'); break;
case 0xC03FCE31: MySerial.write('8'); break;
case 0xC03FD6A9: MySerial.write('9'); break;
case 0xC03FD2AD: MySerial.write('0'); break;
case 0xC03FD0AF: MySerial.write('Z'); break;
case 0xC03FD4AB: MySerial.write('T'); break;
case 0xC03FC8B7: MySerial.write('L'); break;
case 0xC03FD8A7: MySerial.write('U'); break;
case 0xC03FF08F: MySerial.write('R'); break;
case 0xC03FEA15: MySerial.write('D'); break;
case 0xC03FC0BF: MySerial.write('P'); break;
}
delay(200);
digitalWrite(LED_PIN, LOW);
} // end loop
uint16_t listenForIR() { // IR receive code
currentpulse = 0;
while (1) {
unsigned int highpulse, lowpulse; // temporary storage timing
highpulse = lowpulse = 0; // start out with no pulse length
while (IR_CODE_PIN & _BV(IR_PIN)) { // got a high pulse
highpulse++;
delayMicroseconds(RESOLUTION);
if (((highpulse >= MAXPULSE) && (currentpulse != 0))|| currentpulse == NUMPULSES) {
return currentpulse;
}
}
pulses[currentpulse][0] = highpulse;
while (! (IR_CODE_PIN & _BV(IR_PIN))) { // got a low pulse
lowpulse++;
delayMicroseconds(RESOLUTION);
if (((lowpulse >= MAXPULSE) && (currentpulse != 0))|| currentpulse == NUMPULSES) {
return currentpulse;
}
}
pulses[currentpulse][1] = lowpulse;
currentpulse++;
}
}
#include <SoftwareSerial.h>
SoftwareSerial mySerial(18, 19); // RX, TX
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
mySerial.begin(9600);
}
void loop() { // run over and over
if (mySerial.available()) {
char c = mySerial.read();
digitalWrite(2, HIGH);
delay(200);
digitalWrite(2, LOW);
if(c=='1') Serial.println("get 1");
if(c=='2') Serial.println("get 2");
if(c=='3') Serial.println("get 3");
if(c=='4') Serial.println("get 4");
while(mySerial.available()) mySerial.read();
}
}
+21 |
1294
44
|
+130 |
2789
39
|
+44 |
2295
79
|
Глянул плату, глянул схему — чего-то на схеме хватает :) где стабилизатор?
Ноги возле корпуса не гнут и к плате винтом прижимают (или ставят вертикально)
Держится очень жестко, а мощность не большая, поэтому вполне приемлемый вариант
чем их меньше, тем быстрее обновление, но питание нужно подводить ко всем стыкам.
Порядка 1,2 Ампера потребляет метр этой ленты.
питание потребуется порядка 1.2 * 20 = 24 А (120Вт), учитывая потери и огрехи блоков питания, я бы взял 150-200 Вт
скажите какое значение вас устроит?
при половинной яркости — белый цвет — потребляет порядка 0.8 А на метр
вот такое устройство:
www.220-volt.ru/catalog-16876/
если буду например сверлить вольфрамовым сверлом 0.4/0.5 сверло не сломается?
Из-за люфта кроме риска сломать сверло есть еще неприятный момент, когда на выходе сверло режет контактную площадку печатной платы.
при внимательности подобных проблем удается избегать
Насчет флюса: флюс действительно очень удачный, такое впечатление, что китайцы его почему то не подделывают (тьфу*3)
Но вот шприцы все таки лучше взять под это дело заточенные, типа таких — именно этот лот брал полтора года назад.
А пару месяцев назад купил такие наконечники — стало еще лучше.
… я взял баночку RMA-559, серез пару месяцев после 218-го.
До сих пор не раскупорил — до того мне 218-й понравился.
Даже еще в запас баночку взял, первые 100 гр. уже вот-вот закончатся…
иголку я прицепил потолще, от какого-то китайского шприца, в остальном все хорошо
BL18050 18GA Blunt End Tip 0.84 1.27 Green
Это 0,84 мм внутренний диаметр.
Через 3-4 месяца приходилось менять, да и с дозировкой не все было нормально — часто выдавливал лишнее.
Пластиковые иглы практически до конца идут конусом — намного точнее дозировка.
… хотя я помню те времена, когда просто разводил канифоль в спирте и заливал в обычный медицинский шприц, с немного укороченной (по вкусу) иглой.
Если флюс там вдруг застывал — все таки спирт имеет свойство испаряться, а паял не всегда ежедневно — достаточно было прислонить иголку к жалу паяльника, и все волшебным образом прочищалось :)
попробую пластиковые — спасибо
гораздо хуже смывать какой-нибудь безотмывный флюс
я зубной щеткой смываю с изопропиловым спиртом — а потом водой и сушу обычным феном
он то тоже отмывается, но как правило только зубной щеткой и гораздо хуже канифоли
Это сейчас там написано, что для пайки радиаторов — тогда было написано про светодиоды.
Вот то, что остается после этой пасты — эту дрянь гвоздем не сразу сковырнешь. Не то что зубной щеткой…
Хотя плавится да, при низкой температуре…
И теперь вроде написано, что она еще от рентгеновских лучей защищает.
Но смыть остатки флюса после нее — невозможно.
Зато, к выской несмываемости у этого флюса есть еще одно свойство: низкая смачивающая способность.
Вот если бы наоборот…
странная штука
Сейчас он появился, товар тот же — но описание совсем другое.
А результат…
Ну, вот примерно такой:
Только не подумайте, что перегрел — температура меньше 200 была, при большей температуре после пайки с Mechanic XG-50 все белое и красивое.
И повторюсь — когда покупал, в описании лота присутствовала пайка светодиодов — для чего и купил.
Потому как слишком легко перегреть светодиод при пайке.
Barrel tip cap — 3pcs
Blunt end tip 14GA-30GA, totally 50pcs.
три шприца там с 3-мя колпачками и 50 иголок разных
так чертят только мудаки
особенно уго ик приемника и мк
я не для конкурса чертежей рисовал и не для курсовой в институте, тому кому нужно в этой схеме все понятно
Это, видимо, очередная разновидность грамма-наци.
Сортов дебилов очень много :)
ну я и намекнул тебе как бы, а отмазку всегда найти можно
поэтому и тазы клепают как попало и все остальное через жопу
и так сойдет
А без этого называть мудаком того, кто что-то сделал и опубликовал это «для всех» может только конченный мудак ;)
думал сделать родителям таймер для кухни, схему нарисовал, потом додумался спросить
оказалось нахер не надо
скоро доделаю контроллеры домофонов для пары контор и буду пилить свой для подключения в аналоговый порт роутеров, а второй voip полностью
есть дсл модемы с аналоговым телефонным портом и многие бы конторы хотели иметь возможность открывать двери с телефона
для этого надо покупать дорогие атс и к ним еще модуль и к этому модулю еще модуль сопряжения с конкретным типом домофонов на 5 или 2 провода
причем на исдн телефонах нет кнопки R и ее функции через меню есть, а это гимор
у меня такой телефон есть, поэтому я хочу сделать без этой кнопки
а воип интерфейс от одной конторы стоит 2500 евров
«Хищник хочет на дачу»
реально ему там лучше :) и не важно наличие дачной автоматики
Я на пробу взял AP102 — проще в управлении.
WS2811 — более новая версия. Данные передаются по одному проводу — DATA. Сигнала CLOCK нет, так как
WS2811 контроллер сам считает временные интервалы и надо им следовать в своём коде. Обычно питание 5 вольт. RGB светодиод так же подключен отдельно.
WS2812 — то же самое как WS2811, но встроен в светодиод (например, 5050), тем делает ленту более компактной и с возможным более плотным размещением светодиодов. Обычно питание 5 вольт.
WS2812B — как WS2812, но с отличием в том, что питания для светодиодов и самой микросхемы объединено (у всех вариантов выше питание раздельное). Микросхема-светодиод имеет 4 вывода.
то есть, есть различия принципиальные
Станочек где покупали?
Не могли бы Вы выложить все нужные файлы и библиотеки?
Заранее спасибо.
Потребление ленты составляет 18вт/м. Значит 15 метров будет 270вт.
Нужен контроллер к ней у которого будут режимы бегущей волны и который сможет управлять 15ю метрами.
Присмотрел для себя контроллер wf300. Подскажите могу ли я им управлять? Не сгорит?
github.com/FastLED/FastLED/wiki/Interrupt-problems
Такой вопрос — а зачем именно усеченная версия — SendOnlySoftwareSerial.h? Обычная не влезает в Attiny85? Думаю использовать готовую — Digispark kickstarter Micro Attiny85, но вдруг захочу еще к ней дисплейчик прикрутить и на нее строки отправлять.
сейчас мое устройство так выглядит:
Но это приемлемые потери — это же светодиоды, а не управление чем-то летающим. ;)
Еще раз спасибо за статью!
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.