Robot komutlarını aralıkta tutan koruyucu
Dışarıdan gelen servo hedefi eksi veya çok büyük olabilir. Komutu güvenli çalışma aralığına sıkıştırıp düzeltildiğini raporla.
13+ yaş · 45 dakika · C++17
İnteraktif atölyede aç →Neler öğreneceğiz?
Dışarıdan gelen servo hedefi eksi veya çok büyük olabilir. Komutu güvenli çalışma aralığına sıkıştırıp düzeltildiğini raporla.
Bu atölyede yalnız sonuca değil, tahmininin neden doğru veya yanlış çıktığına da bak. Bir deney günlüğünde giriş, beklenen sonuç, gözlenen sonuç ve düzeltme olmak üzere dört sütun aç.
Öğrenme hedefleri
- İzin verilen 20–160 aralığını sayı doğrusunda çiz.
- Komut fiziksel sensör sınırını aşıyorsa sıkıştırmak yerine alarm üret.
Malzeme listesi
- C++17 derleyicisi bulunan bilgisayar
- Metin düzenleyici
- Deney günlüğü
Adım adım yapalım
- İzin verilen 20–160 aralığını sayı doğrusunda çiz.
- Beş isteğin hangilerinin sınırlandırılacağını işaretle.
- C++17 seçerek clamp kullanan kodu derle.
- −10’un 20’ye, 250’nin 160’a dönüştüğünü gör.
- Tam sınır değerlerinin değişmeden geçtiğini kontrol et.
- Sıkıştırma ile hatalı komutu tamamen reddetme seçeneklerini karşılaştır.
Kod · C++17
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
using namespace std;
int main(){
for(int requested:vector<int>{-10,20,90,160,250}){
int safe=clamp(requested,20,160);
cout<<requested<<" -> "<<safe<<(requested==safe?" kabul":" sinirlandi")<<"\n";
}
}Kod nasıl çalışır?
clamp alt ve üst sınır arasındaki değeri döndürür. Bu masaüstü programı motor sürmez; fiziksel durdurucu yerine geçmez.
Beklenen sonuç
Bilgisayarda çalıştırılan örneğin çıktısı:
-10 -> 20 sinirlandi
20 -> 20 kabul
90 -> 90 kabul
160 -> 160 kabul
250 -> 160 sinirlandi
Sıra sende
Komut fiziksel sensör sınırını aşıyorsa sıkıştırmak yerine alarm üret.
Güvenli atölye
Bu çalışma düşük gerilimli eğitim içindir. Donanımı enerji kapalıyken, bir yetişkinle kur. Şebeke elektriği kullanma. Kodun derlenmesi fiziksel devrenin test edildiği anlamına gelmez.
Çalışmıyorsa kontrol et
- Sonucu alamıyorsan programın ilk satırından başlayıp girdileri tek tek kontrol et.
- Donanım varsa enerjiyi ayır; GND, sinyal uçları ve parça yönlerini bağlantı tablosundan doğrula.
- Aynı anda yalnız bir şeyi değiştir; değişiklik öncesi ve sonrası sonucu günlüğe yaz.
Kontrol noktaları
- Başlamadan önce: gerekli malzemeleri say ve giriş değerlerini deney günlüğüne yaz.
- Kurulumdan sonra: her bağlantıyı aşağıdaki tabloyla karşılaştır; yazılım projesinde giriş listesini kontrol et.
- Testten sonra: beklenen sonucu kendi çıktınla karşılaştır. Fark varsa ilk farklı adımı bul.
Kaynakların kullanımı
Kaynak, ilgili kavramı öğrenmek ve karşılaştırmak içindir. Türkçe görev, örnek kod ve görseller bu atölye için özgün hazırlanmıştır; kaynak makalenin çevirisi veya kopyası değildir.
https://learn.adafruit.com/adafruit-arduino-lesson-14-servo-motors/arduino-code-for-sweep