Arduino ve Butonlar ile Led Kontrolü (3. Örnek) - Robo90 Arduino Dersleri #25
HTML-код
- Опубликовано: 8 ноя 2022
- 🔗 İnternet Mağazamız: www.robo90.com/?...
🚀 Robo90 Arduino Setleri:
👉Robo90 Arduino Uno İleri Başlangıç Seti: www.robo90.com/arduino-uno-il...
👉Robo90 Arduino Uno Başlangıç Seti: www.robo90.com/arduino-uno-ba...
Temel C/C++ eğitiminin sonuna yaklaşırken, şimdiye kaar öğrendiklerimiz ile donanım tabanlı bazı antrenmanlar ile pratik yapmak bizim için çok iyi olacaktır. Bu videodaki gibi basit örnekleri kendi kafanızdan kurgulayıp yazmaya deniyerek antrenman yapmaya devam etmenizi tavsiye ederim.
🔗 Instagram: / robo90com
🔗 Arduino Dersleri Oynatma Listesi (Playlist):
• Neden Bu Arduino Kursu...
Ledler, Dirençler ve Ohm Yasası: • Ledler, Dirençler ve O...
Breadboard Üzerine Devre Kurmak: • Breadboard Üzerine Dev...
Mekanik Switch Kontrolü ve Pull-up Pull-down Dirençleri: • Mekanik Switch Kontrol... - Наука
Yeni dersss geldiiii 😇🥰
Teşekkürler.
Teşekkür ederm.
hocam butona bastığınızda ledler yandı ve o anda elektrik kesintisi yaşandı, elektrik geldiğinde ledler yanık olacakmı?
:)
while döngüsü ile delay eklediğim an sistem çalışmıyor fakat while ile delay satırını silince düzeliyor, seri port ekranından bakınca while döngüsü yazılıyken butonun değeri 0 ken basınca 1 oluyor ve kalıyor, geri 0 a dönmüyor sebebi nedir?
Merak ettiğim şey şu:
1) if(...){ while(...){...}...} LED YAKMA DURUMLARI
2) if(...){while(...){...}LED YAKMA DURUMLARI}
1.durumda butona bastığımız zaman if döngüsünde kaldığımız,
2.durum ise buton bastıktan sonra stat değerinin değişip if döngüsünün dışında işlem gördüğümüz durumdur.
1.DURUM
if (digitalRead(BUTTON) == 1)
{ state = !(state);
while (digitalRead(BUTTON) == 1){delay(100);}
digitalWrite(BLUELED, state);digitalWrite(BROWNLED, state); digitalWrite(YELLOWLED, state);digitalWrite(GREENLED, state);
}
2.DURUM
if (digitalRead(BUTTON) == 1){state = !(state);
while (digitalRead(BUTTON) == 1){delay(100);}
}
digitalWrite(BLUELED, state);digitalWrite(BROWNLED, state);digitalWrite(YELLOWLED, state);digitalWrite(GREENLED, state);
Doğru olan kullanım 2.durum mu yoksa ben yanlış mı düşünüyorum?
İkisi de aynı kodda çalışıyor;
int button1 = 8;
int button2 = 9;
int led1 = 2;
int led2 = 3;
int led3 = 4;
int led4 = 5;
int state = 0;
void setup() {
pinMode(button1, INPUT);
pinMode(button2, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
}
void loop() {
if (digitalRead(button1) == 1) {
digitalWrite(led1, 1);
digitalWrite(led2, 1);
digitalWrite(led3, 1);
digitalWrite(led4, 1);
}
else if (digitalRead(button2) == 1) {
delay(150);
state = !(state);
digitalWrite(led1, state);
digitalWrite(led2, state);
digitalWrite(led3, state);
digitalWrite(led4, state);
}
else if (state == 0) {
digitalWrite(led1, 0); /* state 0 iken zaten ledin sönmesi gerektiği için ve if çalışırken alt satırlar umursanmayacağı için bu şekilde gayet sağlıklı olduğunu düşünüyorum*/
digitalWrite(led2, 0);
digitalWrite(led3, 0);
digitalWrite(led4, 0);
}
}
👍
#25 tamamlandı
state değerine bool desek de aynı şekilde çalışır mı? veya daha verimli olur mu?
denedim çalıştı. Ayrıca int 2 bayt bool 1 bayt kaplıyor demiştik
butonlarımı düzgün bağlasam da butona bastığımda 1 değerini almam gerekirken 0 değeri değişmiyor, 2. bir buton bağladığımda ise 2.butonun değeri sabit 1 oluyor bastığımda ise 0 oluyor yardım eder misiniz gerçekten kafayı yiyeceğim
Pull up ve pull down dirençleri videosu ile breadboardu izlediniz mi ? Sorun orada gibi görünüyor. Devreyi kodu elime alıp incelemeden o videolarda dediğimden başka birşey diyemem uzaktan.
#define led1 8
#define led2 9
#define led3 10
#define but1 2
#define but2 3
int deger = 0;
void setup() {
// put your setup code here, to run once:
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(but1, INPUT);
pinMode(but2, INPUT);
pinMode(led3, OUTPUT);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(but1)==1){
do
{ digitalWrite(led1,1);
digitalWrite(led2,1);
digitalWrite(led3,1);}
while(digitalRead(but1)==1);
{digitalWrite(led1,0);
digitalWrite(led2,0);
digitalWrite(led3,0);}
}
if(digitalRead(but2)==1)
{deger=!(deger);
digitalWrite(led1,deger);
digitalWrite(led2,deger);
digitalWrite(led3,deger);
while(digitalRead(but2)==1)
delay(100);
}
}
ikisinin aynı anda çalıştığı seneryo için iyi bir örnek olur mu yoksa daha güzel kodlama yapılabilir mi? Tabi bu kişiden kişiye göre değişir ama en azından farklı yolları görmek adına.
ben asaıdaki gibi bir kod yazdım ama bread boardda deneme sansım olmadı sizce yazdıgım kod dogrumu
int i = 4;
int y = 3;
#define buton1 8
#define buton2 8
#define lamba1 3
#define lamba2 4
#define lamba3 5
#define lamba4 6
void setup() {
pinMode(buton1 , INPUT);
pinMode(buton2 , INPUT);
pinMode(lamba1 , OUTPUT);
pinMode(lamba2 , OUTPUT);
pinMode(lamba3 , OUTPUT);
pinMode(lamba4 , OUTPUT);
}
void loop() {
if(buton2, HIGH) {
i++;
}
if(i = 5) {
digitalWrite(y, HIGH);
y++;
if ( y = 7 ) {
y == 7;
delay(50);
}
}
if(i = 6) {
i = i - 2;
}
if(i = 4){
digitalWrite(y, LOW);
y--;
if(y = 2) {
y == 2;
delay(50);
}
}
}
yanlıslıkla butonları aynı pine atamısım buton2 nin pini 9 olucak sorry :(
#define buton_1 8
#define buton_2 9
#define led 2
int mantik = 0;
void setup() {
Serial.begin(9600);
pinMode(INPUT,8);
pinMode(INPUT,9);
pinMode(OUTPUT,2);
}
void loop() {
//buton_1
if(digitalRead(buton_1)==1){
if(mantik==1){
digitalWrite(led,LOW);
mantik=0;
delay(250);
}
else{
digitalWrite(led,HIGH);
mantik=1;
delay(250);
}
}
//buton_2
if(digitalRead(buton_2)==1)
{
digitalWrite(led,HIGH);
while(digitalRead(buton_2)){}
digitalWrite(led,LOW);
}
}
int i = 1;
void setup() {
Serial.begin(9600);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
}
void loop() {
if (digitalRead(9) == 1) {
while (digitalRead(9) == 1) {
delay(25);
}
i++;
}
if (i % 2 == 0) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
}
if (i % 2 == 1) {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
if (digitalRead(8) == 1) {
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
}
else {
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
}
}