Nasıl olduğunu hatırla
robotelektrikli süpürge N.N. kitabında "Sibernetik" Nosova "Güneş şehrinde Dunno" mu? İşe gitmenin zamanı geldiğini hatırlatması gerekiyor muydu? Şimdi, bu tür cihazlar bir gerçeklik haline geldiğinde, bunun gerekli olduğu ortaya çıktı. Uzaktan kumandayı alın ve üzerindeki düğmeye basın. Pachkul’un çalışmasının kahramanı Pestrenky, bunu görmüş olsaydı, kesinlikle şunu fark ederdi: “Eğer bir düğmeye basmanız gerekiyorsa, sadece düğmesiz olsaydı, bu ne tür bir otomatiktir.” Instructables'ın ShaperG takma adı altındaki yazarı da böyle düşündü. Ve yaptı
kendin yap elektrikli süpürgeyi bir programda başlatmak için cihaz.
ev yapımı ürün çeşitli elektrikli aletleri bir programda (IKEA veya herhangi bir) açmak için mekanik bir zamanlayıcı, bir güç kaynağı,
Arduino, breadboard tipi breadboard ve dupont jumper'lar (isteğe bağlı, her şeyi lehimleyerek bağlayabilirsiniz), iki LED - görünür parlaklık ve kızılötesi, iki 330 Ohm direnç, Sparkfun muhafazası veya başka herhangi bir.
Gerekli tüm bileşenleri seçtikten sonra, sihirbaz bir diyagram çizer. Ve yine Fritzing benzeri programda, bu durumda, Mekanizmalar çevrimiçi uygulamasında. Herkes bu şekilde diyagram çizmeyi sevmez, ancak her şeyin nasıl bağlanacağı anlaşılabilir.
Şemaya karar verdikten sonra, sihirbaz programlamaya başlar:
Bir kütüphane alır
buradave taslak
burada. Gücü açıldığında, her beş saniyede bir sürekli olarak bir “temiz” komutu gönderecek şekilde çizimi basitleştirir. Taslak, aşağıdaki hallerde tamamlanmalıdır:
model elektrikli süpürge iRobot Roomba 530'dan farklıdır. Eh, usta bunu çıkarır:
#include
/ *
Süper Basit Arduino Powerd Roomba Zamanlayıcı
2013-08-03 Eğitici sürümü
Uyarlanmış kod: https://gist.github.com/probonopd/5181021
Kızılötesi komutları Arduino'dan iRobot Roomba'ya gönderme
probono tarafından
2013-03-17 İlk sürüm
Telif Hakkı (c) 2013 tarafından probono
Tüm hakları saklıdır.
Kaynaklı ve ikili formlarda, olsun veya olmasın yeniden dağıtım ve kullanım
aşağıdaki koşulların yerine getirilmesi koşuluyla değişiklik yapılmasına izin verilir:
1. Kaynak kodun yeniden dağıtımları yukarıdaki telif hakkı bildirimini korumalıdır, bu
koşullar listesi ve aşağıdaki sorumluluk reddi.
2. İkili biçimde yeniden dağıtımlar yukarıdaki telif hakkı bildirimini yeniden üretmelidir,
bu koşullar listesi ve belgelerdeki aşağıdaki sorumluluk reddi
ve / veya dağıtım ile sağlanan diğer malzemeler.
BU YAZILIM, TELİF HAKKI SAHİPLERİ VE KATKIDA BULUNANLAR "OLDUĞU GİBİ" SAĞLANIR VE
HERHANGİ BİR İFADE VEYA ZIMNİ GARANTİ, DAHİL, ANCAK SINIRLI DEĞİL, ZIMNİ
BELİRLİ BİR AMACA UYGUNLUK VE FITNESS GARANTİLERİ
REDDEDİLMEKTEDİR. HİÇBİR DURUMDA TELİF HAKKI SAHİBİ VEYA KATKIDA BULUNANLAR
HERHANGİ BİR DOĞRUDAN, DOLAYLI, ARIZALI, ÖZEL, ÖRNEK VEYA SONUÇLANAN ZARARLAR
(YERLEŞTİRİLMİŞ, AMA SINIRSIZ, YEDEK MALLARIN VEYA HİZMETLERİN TEDARİKİ;
KULLANIM, VERİ VEYA K ORR KAYBI; VEYA İŞ KESİNTİSİZ) NASIL OLUR VE
SÖZLEŞME, SÜREKLİ SORUMLULUK VEYA LİMANIN HER YERİNDE SORUMLULUK TEORİSİ ÜZERİNE
(NEGLIGENCE VEYA DİĞERLERİ DAHİL) BU KULLANIMDAN ÇIKARILAN
YAZILIM, BÜYÜK HASARIN OLASI OLMASI TAVSİYE EDİLİRSE.
* /
IRsend irsend; // pin 3'e kablolu; IR LED'i maksimum aralık için sürmek için bir transistör kullanın
int LED = 10;
geçersiz kurulum ()
{
Serial.begin (9600);
pinMode (LED, ÇIKIŞ);
digitalWrite (LED, YÜKSEK); // LED'i açın (YÜKSEK voltaj seviyesidir)
}
void loop ()
{
roomba_send (136); // "Temiz" gönder
gecikme (5000); // 5 saniye bekleyin
}
void roomba_send (int kodu)
{
Serial.print ("Roomba kodu gönderme");
Serial.print (kod);
int uzunluk = 8;
işaretsiz int raw [uzunluk * 2];
işaretsiz int one_pulse = 3000;
unsigned int one_break = 1000;
unsigned int zero_pulse = one_break;
unsigned int zero_break = one_pulse;
int dizi konumu = 0;
// Seri.println ("");
için (int sayaç = uzunluk-1; sayaç> = 0; - sayaç) {
if (kod & (1 << sayaç)) {
// Seri.print ("1");
raw [arrayposition] = one_pulse;
raw [arrayposition + 1] = one_break;
}
başka {
// Seri.print ("0");
raw [arrayposition] = sıfır_ darbe;
raw [arrayposition + 1] = sıfır_aralık;
}
dizi pozisyonu = dizi pozisyonu + 2;
}
for (int i = 0; i <3; i ++) {
irsend.sendRaw (ham, 15, 38);
gecikme (50);
}
Serial.println ("");
Serial.print ("Ham zamanlamalar:");
for (int z = 0; z
Başlangıçta, sihirbaz seri portu monitöre çıkarmak için çizimin çalışmasını kontrol eder. Daha sonra kasadaki her şeyi koyar ve Arduino'yu bir bilgisayardan değil, mekanik bir zamanlayıcı ile bağlı bir güç kaynağından sağlar.
Şimdi, robot elektrikli süpürgenin her zaman geri döndüğü şarj istasyonunun yakınına yerleştirdikten sonra, mekanik zamanlayıcının başlatması için katlama programını ayarlayabilirsiniz. En iyisi - günde bir kez. N.N.'nin çalışmasında olduğu gibi sadece geceleri değil. Nosov.