Уберите из программы чтение датчика освещенности и пропищите азбукой Морзе позывной SOS: три точки, три тире, три точки.

Листинг:

1. #define BUZZER 3

2. int freq = 3000;

3. void setup() {

4. pinMode(BUZZER, OUTPUT);

5. }

6. void loop() {

7. //три точки

8. tone(BUZZER ,freq);

9. delay(100);

10. noTone(BUZZER);

11. delay(200);

12. tone(BUZZER ,freq);

13. delay(100);

14. noTone(BUZZER);

15. delay(200);

16. tone(BUZZER ,freq);

17. delay(100);

18. noTone(BUZZER);

19. delay(700);

20. //три тире

21. tone(BUZZER ,freq);

22. delay(200);

23. noTone(BUZZER);

24. delay(200);

25. tone(BUZZER ,freq);

26. delay(200);

27. noTone(BUZZER);

28. delay(200);

29. tone(BUZZER ,freq);

30. delay(200);

31. noTone(BUZZER);

32. delay(700);

33. }

2.Измените код программы так, чтобы с падением освещенности звук становился ниже (например, падал от 5 кГц до 2,5 кГц)

Листинг:

1. #define BUZZER 3

2. #define SENSOR A0

3. void setup() {

4. pinMode(BUZZER, OUTPUT);

5. pinMode(SENSOR, INPUT);

6. }

7. void loop() {

8. int val, freq;

9. val = analogRead(SENSOR);

10. freq = map(val, 0, 1023,2500,5000);

11. tone(BUZZER ,freq, 20);

12. }

Измените код программы так, чтобы звук терменвокса раздавался не непрерывно, а 10 раз в секунду с различимыми паузами

Листинг:

1. #define BUZZER 3

2. int freq = 3000;

3. int pause[] = {50,100,150,200,250,300,350,400,450,500};

4. void setup() {

5. pinMode(BUZZER, OUTPUT);

6. }

7. void loop() {

8. for (int i=0; i<=6; i++){

9. tone(BUZZER ,freq);

10. delay(50);

11. noTone(BUZZER);

12. delay(pause[i]);

13. if (i==6){

14. i=0;

15. //Озвучиваем конец 10 пиканий за 1 сек

16. tone(BUZZER ,freq);

17. delay(300);

18. noTone(BUZZER);

19. delay(500);

20. }

21. }

22. }

Уберите из программы чтение датчика освещенности и пропищите азбукой Морзе позывной SOS: три точки, три тире, три точки. - student2.ru

Эксперимент 5. Ночной светильник

В этом эксперименте светодиод должен включаться при падении уровня освещенности ниже порога, заданного потенциометром.

Принципиальная схема

Уберите из программы чтение датчика освещенности и пропищите азбукой Морзе позывной SOS: три точки, три тире, три точки. - student2.ru

Уберите из программы чтение датчика освещенности и пропищите азбукой Морзе позывной SOS: три точки, три тире, три точки. - student2.ru

Код

1. #define LED 13

2. #define SENSOR A0

3. #define POT A1

4. void setup() {

5. pinMode(LED, OUTPUT);

6. }

7. void loop() {

8. int lightness = analogRead(SENSOR);

9. int threshold = analogRead(POT);

10. boolean tooDark = (lightness < threshold);

11. if (tooDark) {

12. digitalWrite(LED, HIGH);

13. }

14. else {

15. digitalWrite(LED, LOW);

16. }

17. }

Вопросы для проверки себя

Если мы установим фоторезистор между аналоговым входом и землей, наше устройство будет работать наоборот: светодиод будет включаться при увеличении количества света. Почему?

Так как по закону Ома, чем больше сопротивление на фоторезисторе тем больше напряжение выдается на pinA0. В ином случае наоборот, чем больше сопротивление, тем меньше напряжение.

Какой результат работы устройства мы получим, если свет от светодиода будет падать на фоторезистор?

Светодиод засветит фоторезистор, поступит команда, что нужно выключить светодиод, он погаснет, на фоторезистор больше не будет падать свет и светодиод опять включится, и так будет продолжаться до наступления дня.

Если мы все же установили фоторезистор так, как сказано в предыдущем вопросе, как нам нужно изменить программу, чтобы устройство работало верно?

Листинг:

1. #define LED_PIN 13

2. #define LDR_PIN A0

3. #define POT_PIN A1

4. void setup()

5. {

6. pinMode(12, OUTPUT);

7. pinMode(LED_PIN, OUTPUT);

8. }

9. void loop()

10. {

11. digitalWrite(12,HIGH);

12. int lightness=analogRead(LDR_PIN);

13. int threshold=analogRead(POT_PIN);

14. boolean tooDark = (lightness>threshold);

15. if (tooDark){

16. digitalWrite(LED_PIN, HIGH);

17. }

18. else

19. {

20. digitalWrite(LED_PIN, LOW);

21. }

22. }

4.Допустим, у нас есть код if (условие) {действие;}. В каких случаях будет выполнено действие?

При истинности логического выражения в (условие).

5.При каких значениях y выражение x + y > 0 будет истинным, если x > 0?

При y (-x;+∞)

Наши рекомендации