<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Despertador_Bon_Dia_de_la_Maria_%28Arduino%29</id>
	<title>Despertador Bon Dia de la Maria (Arduino) - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Despertador_Bon_Dia_de_la_Maria_%28Arduino%29"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Despertador_Bon_Dia_de_la_Maria_(Arduino)&amp;action=history"/>
	<updated>2026-08-30T08:44:35Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Despertador_Bon_Dia_de_la_Maria_(Arduino)&amp;diff=259535&amp;oldid=prev</id>
		<title>Joan: /* Codi Arduino. Lògica del programa */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Despertador_Bon_Dia_de_la_Maria_(Arduino)&amp;diff=259535&amp;oldid=prev"/>
		<updated>2020-06-02T11:31:42Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Codi Arduino. Lògica del programa&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;__TOC__&lt;br /&gt;
=Introducció=&lt;br /&gt;
Estem en el confinament de COVID-19. I a 3rD practiquen Arduino. Amb la Maria hem pensat fer un despertador amb Arduino. Un interruptor; un sensor LDR que detecti el nivell de llum; i un ''buzzer'' que faci sonar la melodia de ''Bon Dia'' dels ''Pets''.&lt;br /&gt;
&lt;br /&gt;
=Esquema=&lt;br /&gt;
[[Fitxer:Maria qv croquis SketchUp.png | thumbnail]]&lt;br /&gt;
[[Fitxer:Maria qv croquis circuit.png | thumbnail]]&lt;br /&gt;
Estudiem per separat cadascun dels blocs:&lt;br /&gt;
*codi mínim per a l'interruptor&lt;br /&gt;
*codi mínim per al sensor LDR&lt;br /&gt;
*codi mínim per al buzzer&lt;br /&gt;
*codi mínim per fer sonar una melodia&lt;br /&gt;
Després d'ha de posar tot junt.&lt;br /&gt;
&lt;br /&gt;
=Codi Arduino. Lògica del programa=&lt;br /&gt;
*Si l'interruptor està apagat, no fer res.&lt;br /&gt;
*Quan encenem l'interruptor, llegim el sensor LDR.&lt;br /&gt;
*Si passem per sota d'un llindar de llum farem sonar la melodia en bucle, fins que s'apagui l'interruptor&lt;br /&gt;
*Ara l'interruptor està apagat, i continuarà així fins que torni a començar el procés.&lt;br /&gt;
&lt;br /&gt;
script '''despertador_ldr.ino''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;quot;pitches.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
const int ldrPin = A0;&lt;br /&gt;
int inPin = 7;&lt;br /&gt;
int pwmPin = 9;  &lt;br /&gt;
int reading;&lt;br /&gt;
int tempo = 1500; //per controlar el tempo, com més gran el valor, més lenta la melodia&lt;br /&gt;
int estat_interruptor;&lt;br /&gt;
bool entrem_en_bucle = true;&lt;br /&gt;
bool melodia_sonant = false;&lt;br /&gt;
int llindar_ldr = 800;&lt;br /&gt;
&lt;br /&gt;
// notes in the melody:&lt;br /&gt;
//int melody[] = {&lt;br /&gt;
//  NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4&lt;br /&gt;
//};&lt;br /&gt;
int melodia_bon_dia[] = {&lt;br /&gt;
  NOTE_E5, NOTE_E5, NOTE_C5, 0, 0, NOTE_C5, NOTE_D5, NOTE_D5, NOTE_D5, NOTE_D5, NOTE_G5, NOTE_F5,&lt;br /&gt;
  NOTE_E5, NOTE_D5, NOTE_E5, NOTE_C5, 0, 0, NOTE_C5, NOTE_B4, NOTE_B4, NOTE_B4, NOTE_B4, NOTE_E5, NOTE_D5, NOTE_C5, NOTE_B4, NOTE_A4, 0, 0, NOTE_A4, NOTE_B4, NOTE_C5, NOTE_D5,&lt;br /&gt;
  NOTE_C5, NOTE_G4, NOTE_G4, NOTE_G4, 0, NOTE_G4, NOTE_C5, NOTE_E5, NOTE_E5, NOTE_D5, NOTE_A4, NOTE_D5, NOTE_D5&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
// note durations: 4 = quarter note, 8 = eighth note, etc.:&lt;br /&gt;
//int noteDurations[] = {&lt;br /&gt;
//  4, 8, 8, 4, 4, 4, 4, 4&lt;br /&gt;
//  4, 4, 4, 4, 8, 8, 6, 16, 6, 16, 6, 16, 6, 16, 4, 4, 4, 8, 8, 6, 16, 6, 16, 6, 16,&lt;br /&gt;
//};&lt;br /&gt;
int noteDurations[] = {&lt;br /&gt;
  4, 4, 4, 4, 8, 8, 6, 16, 6, 16, 6, 16, 6, 16, 4, 4, 4, 8, 8, 6, 16, 6, 16, 6, 16, 6, 16, 4, 4, 4, 6, 16, 6, 16, 6, 16, 6, 16, 6, 16, 6, 16, 4, 4, 4, 4, 1&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void setup() {  &lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  pinMode(ldrPin, INPUT);&lt;br /&gt;
   pinMode(inPin, INPUT);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  reading = digitalRead(inPin);&lt;br /&gt;
  if(estat_interruptor!=reading || entrem_en_bucle) {&lt;br /&gt;
    estat_interruptor=reading;&lt;br /&gt;
    entrem_en_bucle = false;&lt;br /&gt;
    Serial.println(estat_interruptor);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (estat_interruptor &amp;amp;&amp;amp; !melodia_sonant) {&lt;br /&gt;
    //llegim el nivell del sensor&lt;br /&gt;
    int ldrStatus = analogRead(ldrPin);&lt;br /&gt;
    Serial.println(ldrStatus);&lt;br /&gt;
    if (ldrStatus &amp;lt; llindar_ldr) {&lt;br /&gt;
&lt;br /&gt;
      melodia_sonant = true;&lt;br /&gt;
      sonar_melodia();&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(200);&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void sonar_melodia() {&lt;br /&gt;
  //la melodia sona en loop fins que tanquem l'interruptor&lt;br /&gt;
  for (;;) {&lt;br /&gt;
    Serial.println(&amp;quot;fem sonar la melodia&amp;quot;);&lt;br /&gt;
    //la melodia dura 5 segons&lt;br /&gt;
    //delay(5000);&lt;br /&gt;
    play_bon_dia();&lt;br /&gt;
    &lt;br /&gt;
    reading = digitalRead(inPin);&lt;br /&gt;
    if(reading == 0) {&lt;br /&gt;
      estat_interruptor=reading;&lt;br /&gt;
      Serial.println(&amp;quot;apaguem la melodia&amp;quot;);&lt;br /&gt;
      //sortim del bucle&lt;br /&gt;
      break;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  melodia_sonant = false;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void play_bon_dia() {&lt;br /&gt;
  // iterate over the notes of the melody:&lt;br /&gt;
  for (int thisNote = 0; thisNote &amp;lt; sizeof(melodia_bon_dia)/sizeof(int) ; thisNote++) {&lt;br /&gt;
&lt;br /&gt;
    // to calculate the note duration, take one second divided by the note type.&lt;br /&gt;
    //e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.&lt;br /&gt;
    int noteDuration = tempo / noteDurations[thisNote];&lt;br /&gt;
    tone(pwmPin, melodia_bon_dia[thisNote], noteDuration);&lt;br /&gt;
&lt;br /&gt;
    // to distinguish the notes, set a minimum time between them.&lt;br /&gt;
    // the note's duration + 30% seems to work well:&lt;br /&gt;
    int pauseBetweenNotes = noteDuration * 1.30;&lt;br /&gt;
    delay(pauseBetweenNotes);&lt;br /&gt;
    // stop the tone playing:&lt;br /&gt;
    noTone(8);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=video Maria=&lt;br /&gt;
*https://drive.google.com/file/d/1E6SLCOLLOuVM2EvQiKf3CG2sxtJfmRM9/view&lt;br /&gt;
&lt;br /&gt;
=Arduinoblocks=&lt;br /&gt;
*http://www.arduinoblocks.com/&lt;br /&gt;
joanqc@gmail.com / jq********&lt;br /&gt;
&lt;br /&gt;
Per tal de pujar el codi a l'Arduino, necessito el '''ArduinoBlocks Connector'''&lt;br /&gt;
&lt;br /&gt;
Mètode d'instal.lació alternatiu (terminal)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo dpkg -i abconnector_4_x64.deb&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Mètode alternatiu d'execució (terminal)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ /opt/abconnector/abconnector&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
{{Autor}}, maig 2020&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>