Arduino da nextion ekranı kullanarak led yakma ve led söndürme uygulaması gerçekleştireceğiz. Nextion ekran kullanacağımız için Nextion Editor uygulamasını indirmemiz gerekmektedir. Bu uygulama sayesinde ekranımız için istediğimiz arayüzü tasarlayabileceğiz. Basit bir ara yüze sahiptir.
Nextion Editor indirmek için aşağıdaki linkten ulaşabilirsiniz:
https://nextion.tech/nextion-editor/
Bu uygulama da 2.8 inch ekran kullanılmıştır.
Tasarlanan Arayüz
Arduino Kodu:
Arduinoya bağlanan bir butona ne kadar süre basıldığını bulmak için millis() fonksiyounu kullanılır. Millis() fonksiyonu, arduinoya enerji verildiği zaman otomatik olarak çalışmaya başlar. Bulunan zaman değeri milisaniye cinsindendir.
Devre şeması:
Arduino kodu:
const int button = 3;
unsigned long time1 = 0;
unsigned long time2 = 0;
void setup()
{
pinMode(button,INPUT);
Serial.begin(9600);
}
void loop()
{
while(digitalRead(button)==0){}
while(digitalRead(button)==1){}
Serial.println(digitalRead(button));
while(digitalRead(button)==0){
Serial.println("while 1");
Serial.println(digitalRead(button));
}
time1 = millis();
while(digitalRead(button)==1){
Serial.println("while 2");
Serial.println(digitalRead(button));
}
time2 = millis() - time1;
Serial.println(time2);
delay(1000);
}
1) Metindeki kelimeleri, sayıları ve cümlelerin sayısını bulan C programı
Çözüm 1:
#include<stdio.h>
#include<string.h>
const char* metin = "Bu gun hava cok guzel ama yaz mevsimi icin biraz serin.\
Bu sene bir turlu yaz gelemedi. Gelse ne olacak ki? Salgin yuzunden kimse bir\
yere gidemiyor. Kalabaliklardan uzak durmak zorunda olmak berbat bir sey. Bu gun gunlerden Persembe.\
Bu gun pazara gittim. Pazardan 3 kg elma, 2 kg portakal aldım. Saat 9'u 25 gece geldim. Ben 1999 yılında dogdum.";
int main()
{
int kelime = 0;
int cumle = 0;
int sayi = 0;
int uzunluk = strlen(metin);
for (int i = 0; i < uzunluk; i++) {
if (metin[i] == ' ') {
kelime = kelime + 1;
}
if (metin[i] == '.' || metin[i] == '?') {
cumle += 1;
if (metin[i + 1] != ' ') {
kelime = kelime + 1;
}
}
if (metin[i] == '1' || metin[i] == '2'||metin[i] == '3' || metin[i] == '4' ||
metin[i] == '5' || metin[i] == '6' || metin[i] == '7' || metin[i] == '8' ||
metin[i] == '9') {
if(metin[i-1] == '1' || metin[i-1] == '2' || metin[i-1] == '3' || metin[i-1] == '4' ||
metin[i-1] == '5' || metin[i-1] == '6' || metin[i-1] == '7' || metin[i-1] == '8' ||
metin[i-1] == '9')
sayi = sayi - 1;
sayi = sayi + 1;
}
}
printf("%d", kelime);
printf("\n%d", cumle);
printf("\n%d", sayi);
return 0;
}
Çözüm 2:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main()
{
const char* cc = "Bu gun hava cok guzel ama yaz mevsimi icin biraz serin.\
Bu sene bir turlu yaz gelemedi. Gelse ne olacak ki? Salgin yuzunden kimse bir\
yere gidemiyor. Kalabaliklardan uzak durmak zorunda olmak berbat bir sey. Bu gun gunlerden Persembe.\
Bu gun pazara gittim. Ben pazardan 3 kg elma, 2 kg portakal aldim. Saat 9 da geldim. Ben 1999 yilinda dogdum.";
int kelime = 0;
int cumle = 0;
int sayi = 0;
int result1;
int result2;
int result3;
for (int i = 0; i < strlen(cc); i++)
{
// Kelime sayısı bulunur
result1 = isspace(cc[i]);
if (result1 != 0)
{
kelime = kelime + 1;
}
//Noktalama iÅŸaretleri bulunur
result2 = ispunct(cc[i]);
if (result2 != 0)
{
if(cc[i]!=',')
cumle= cumle + 1;
}
// sayıların bulunması
result3 = isdigit(cc[i]);
if (result3 != 0) {
if(isdigit(cc[i+1]) == 0)
sayi = sayi + 1;
}
}
// kelime sayısına bir eklenir.
kelime = kelime + 1;
printf("\nKelime sayisi = %d\n", kelime);
printf("\nCumle sayisi = %d\n", cumle);
printf("\nSayi sayisi = %d\n", sayi);
return 0;
}
#include <stdio.h>
#include <semaphore.h>
sem_t tek;
sem_t cift;
// tekleri yazan thread
void* thread1(void* arg){
int i;
for(i=0;i<10000;i++){
sem_wait(&tek);
if(i%2 != 0){
printf("Bu thread calisti %ld tek sayi = %d\n",(long)arg, i);
}
sem_post(&cift);
}
return NULL;
}
// çiftleri yazan thread
void* thread2(void* arg){
int i;
for(i=0;i<10000;i++){
sem_wait(&cift);
if(i%2 == 0){
printf("Bu thread calisti %ld cift sayi = %d\n",(long)arg, i);
}
sem_post(&tek);
}
return NULL;
}
int main(){
sem_init(&tek,0,1);
sem_init(&cift,0,1);
pthread_t t1,t2;
long one =1;
long two = 2;
pthread_create(&t1,NULL,thread1,(void*)one);
pthread_create(&t2,NULL,thread2,(void*)two);
pthread_join(t1,NULL);
pthread_join(t2,NULL);
sem_destroy(&tek);
sem_destroy(&cift);
Tekrarlama Temelleri
Sayaç Kontrollü Tekrarlama
for Tekrarlama İfadesi
| for döngüsü akış diyagramı |
Kısa Yollar:
Kaynaklar:
import socket
host = "192.168.1.42"
port = 12345
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print("socket oluÅŸturuldu")
s.bind((host, port))
print("socket {} nolu porta bağlandı".format(port))
s.listen(5)
print("socket dinleniyor")
except socket.error as msg:
print("Hata:", msg)
while True:
# Client ile bağlantı kurulursa
c, addr = s.accept()
print('Gelen bağlantı:', addr)
# Bağlanan client tarafına bağlandığını belirtelim
mesaj = 'Bağlantı sağlandı'
c.send(mesaj.encode('utf-8'))
# client tarafından gönderilen cpu sıcaklık değeri
yanit = c.recv(1024)
print( yanit.decode("utf-8") )
# Bağlantıyı sonlandıralım
c.close()
