top of page

Electronics

const int RED_pin = 3; // הגדרת פין ללד

const int Danny_pin = A0; // הגדרת חיבור פטציומטר ממקור 0

int how_many_times; // הגדרת משתנה

int pot_value;

int led_brightness;

 

void setup() {

  // put your setup code here, to run once:

pinMode(RED_pin, OUTPUT);

Serial.begin(9600); // הגדרה ראשונית

}

 

void loop() {

  // put your main code here, to run repeatedly:

Serial.println("how many hivhuvim?"); // "?הגדרת הוראה שאל את המשתמש "כמה הבהובים

while(Serial.available() == 0){ // האם יש מידע בתיבת הטקסט

}

how_many_times = Serial.parseInt(); קבלת הקלט שהקליד המשתמש

 

for(int i=1; i<= how_many_times; i++){

pot_value = analogRead(Danny_pin); // הכנסת ערכו המספרי של הפטציומטר למשתנה

led_brightness = map(pot_value, 0, 1023, 0, 255); // מיפוי של שינוי הערכים אליהם יכול להגיע הפנטציומטר בעוצמת הנורה

 

analogWrite(RED_pin, led_brightness); // הדלקת הנורה לפי המשתנה שהוכנס

delay(500); // המתנה של חצי שניה

analogWrite(RED_pin, 0); // כיבוי הנורה

delay(500); // המתנה של חצי שניה

}

 

}

Daring Snicket.png

 */

#include <LiquidCrystal.h>

 

const int btn = 8;  //הגדרת כפתור לפין 8

 

char* introText[]={"Dodge the defs!!","Created on:", "Hit the button..."}; .// הגדרת רשימת טקסטים לשימוש על פי מיקום ברשימה 

 

//הגדרת משתנים

int game=0;

int buttonPress = 0;

int buttonState=0;

int obstaclePos;

int obsDelay;

int score=0;

unsigned long lastDebounceTime = 0;  // הפעם האחרונה שבה הפלט הוחלף (unsigned long - סוג של משתנה)

unsigned long debounceDelay = 50;

int lastButtonState=LOW; // מצב הגדרה של הכפתור 

 

// הגדרת גרפיקה כל דמות בפני עצמה לדוגמא קפיצה ריצה וכו

byte runnin1[8] = { 

  0b01100,

  0b01100,

  0b00000,

  0b11100,

  0b01110,

  0b01100,

  0b11110,

  0b00011

};

byte runnin2[8]={

  0b00110,

  0b00110,

  0b00000,

  0b00111,

  0b01110,

  0b00110,

  0b01110,

  0b00101

};

byte jump[8]={

  0b00100,

  0b01100,

  0b11100,

  0b01110,

  0b01100,

  0b11111,

  0b00000,

  0b00001

};

byte def1[8] = {

  0b00100,

  0b00110,

  0b00111,

  0b01110,

  0b00110,

  0b01111,

  0b01000,

  0b00000

};

byte def2[8]={

  0b00100,

  0b00110,

  0b00111,

  0b01110,

  0b00110,

  0b00110,

  0b00110,

  0b00010

};

byte slide[8]={

  0b00000,

  0b00000,

  0b00011,

  0b00011,

  0b00000,

  0b01111,

  0b11111,

  0b00000

};

 

 

LiquidCrystal lcd(4,6,10,11,12,13); // הגדרת פעולות מובנות שיש באדרוינו במסך LCD

void setup() {

 

  Serial.begin(9600);// הגדרת ראשונית

  pinMode(btn,INPUT);

  lcd.begin(16,2); // הגדרה ראשוני של מסך ( מחייב לפני כל פעולה על המסך)

  lcd.createChar(0,runnin1); // הגדרה של דמויות לפי פיקסלים שהוגדרו מראש

  lcd.createChar(1,runnin2);

  lcd.createChar(2,jump);

  lcd.createChar(3,def1);

  lcd.createChar(4,def2);

  lcd.createChar(5,slide);

  buttonState=digitalRead(btn); // הגדרת מצב כפתור 

}

 

void loop()

{

   

 

    while(game==1) // כל עוד המשתנה שווה ל 1 תעבוד 

      ballActive();

    endGame();

}

 

 void intro()

 {

        score=0;

        lcd.clear(); // ניקוי מסך

        lcd.print(introText[0]);   //הדפסת טקסט מקום 0 ברשימה TEXT

        lcd.setCursor(7,1); // הגדרת מיקום הטקסט על המסך

        delay(2000); 

        lcd.clear();

        lcd.print(introText[1]);    //הדפסת טקסט מקום 1 ברשימה TEXT

        lcd.setCursor(0,1); // הגדרת מיקום הטקסט על המסך

        delay(2000);

        lcd.clear();

        while(button()!=1)            //חכה שהמשתמש ילחץ על הכפתור עד אז הראה את הטקסט מיקום 2 ברשימת TEXT

        {

         lcd.setCursor(0,0);

         lcd.print(introText[2]);

         delay(100);

        }

        if(button()==1) // אם לחצו על הכפתור אז GAME=1

          game=1;

 }

 

 void reset()

 {

      if(obstaclePos%2==0)            //אם השארית שווה 0 שנה תצוגה בכדי שירגיש שהדמות רצה  

      {

          lcd.clear();

          lcd.setCursor(0,1);

          lcd.write(byte(0));

      }

      else     // אחרת הדפס מיקום 1 ברשימת TEXT 

      {

          lcd.clear();

          lcd.setCursor(0,1);       

          lcd.write(1); 

      }

 }

 

 void ballActive()

 {

  obsDelay=200;  

  obstaclePos=15;  //since it is a 16x2 lcd, and index starts from 0.

  while(game==1) // כל עוד GAME=1 תאתחל 

  {

       reset();

       if(button()==1)      //אם הכפתור לחוץ 

        {

          lcd.clear();

          lcd.setCursor(0,0);  

          lcd.write(2);            //הדפס את השחקן שקופץ

          obstacle(obstaclePos);   // הדפס מכשול

          delay(400);              //חכה 4 מאיות שניה כדי שיהיה אפשר להבחין במצב 

          lcd.clear();

          lcd.setCursor(0,1);

          lcd.write(1);            //הדפס את השחקן על הקרקע

          obstacle(obstaclePos);    

         

        }

        else //אחרת 

        {

          if(obstaclePos!=0)        //אם המכשול לא נגע בשחקן המשך

          {

              reset();

              obstacle(obstaclePos);

          }

          else if(obstaclePos==0)   //אם השחקן נתקע במכשול סיים את המשחק

             game=0;

             break;

          }

        }

        obstaclePos--;               //הבאת המכשול קרוב יותר לשחקן

        if(obstaclePos<0)            // אם השחקן הצליח לקפות מעל המכשול  

        {                            

          obsDelay=obsDelay-20;       //העלה מהירות

          obstaclePos=15;             //שים את המכשול בנקודת ההתחלה (סוף המסך)

          score++;                    //העלה את המשתנה באחד

        }

        if(obsDelay==0)               //אם השחקן התחמק 10 פעמים הפסק את המשחק

             

        delay(obsDelay);

    }

  }

int button()

{

     int reading = digitalRead(btn); 

     //אם הכפתור השתנה 

     if (reading != lastButtonState) {

       //אפס את טיימר הקפיצה 

       lastDebounceTime = millis();

     }

     

     if ((millis() - lastDebounceTime) > debounceDelay) {

       buttonState = reading;    

       if (buttonState == HIGH) {

           lastButtonState = reading;

           return 1;

         }

       }

     lastButtonState = reading;

}

void obstacle(int i)

{

          if(obstaclePos%2==0&& obstaclePos>2)   //if defender is far away from the player, then show him running

          {

              lcd.setCursor(i,1);

              lcd.write(3);

          }

          else if(obstaclePos%2!=0&& obstaclePos>2)

          {

              lcd.setCursor(i,1);

              lcd.write(4);

          }

          else                                 //if he is 2 steps close to the player, then show him sliding

          {

              lcd.setCursor(i,1);

              lcd.write(5);

          }

}

void endGame()

{

    if(score==10)

    {

        lcd.clear();

        lcd.print("Congratulations!");

        lcd.setCursor(0,1);

        lcd.print("You beat 'em all");

        delay(3000);

    }

    else if(score<3)

    {

        lcd.clear();

        lcd.print("You suck");

        lcd.setCursor(0,1);

        lcd.print("Score: ");

        lcd.print(score);

        delay(3000);

    }

    else if(score<6)

    {

        lcd.clear();

        lcd.print("Not bad!");

        lcd.setCursor(0,1);

        lcd.print("Score: ");

        lcd.print(score);

        delay(3000);

    }

    else

    {

        lcd.clear();

        lcd.print("Great!");

        lcd.setCursor(0,1);

        lcd.print("Score: ");

        lcd.print(score);

        delay(3000);

    }

}

}

Subscribe Form

Thanks for subscribing!

bottom of page