Wednesday, 28 June 2017

EduBlocks blog 5: Exabytes 17 workshops v1

Here I will be adding the info for the two workshops:

 The potential of Edublocks to introduce Python to secondary students

Python 3 code:

from sense_emu import SenseHat
import mcpi.minecraft as minecraft
import mcpi.block as block
import time
import random


"""
NCS team Pixel Astro Pi competition entry

We have created a bar graph in minecraft and store the values for temp and
humidity in two seperate lists.


Team members are:
Archie
Tom
Adrian
"""

sense = SenseHat()

mc = minecraft.Minecraft.create()
orx,ory,orz = mc.player.getPos()

mc.postToChat("Start Graph")

TempBlock = 35,14

HumidityBlock = 35,3
Temperature_List = []#stores temp data
Humidity_List = []#stores humidity data

DataStreamCount= 0

def BuildDataBlockTemp(ImportedBlock):# take data for temp
    temp = int(sense.temp)
    Temperature_List.append(temp)
    orx,ory,orz = mc.player.getPos()

    for i in range (0,temp):
        x,y,z = mc.player.getPos()
        mc.setBlock(x+30,i,z,ImportedBlock)
    mc.player.setPos(orx,ory,orz+1)
    msg = "Temp = {0}".format(temp)
    #sense.show_message(msg, scroll_speed=0.10 )
    print(msg)
    time.sleep(1)
def BuildDataBlockHumidity(ImportedBlock):# take data for humidity
    humidity = int(sense.humidity)
    Humidity_List.append(humidity)
    orx,ory,orz = mc.player.getPos()
    for i in range (0,humidity):
        x,y,z = mc.player.getPos()
        mc.setBlock(x+30,i,z,ImportedBlock)
    mc.player.setPos(orx,ory,orz+1)
    msg = "Humidity currently is: ",humidity
    print(msg)
    msg = "humidity = {0}".format(humidity)

    time.sleep(4)

 
while True:
    BuildDataBlockTemp(TempBlock) # 46
    BuildDataBlockHumidity(HumidityBlock)


EduBlocks code:





Picture of code working 




Around the world with Minecraft 

The code to carry out this workshop is taken from a recent blog post for Kano and recent Raspberry Jam at Coventry Library in May. You can access the code from here:

https://github.com/ncscomputing/Hackpack/blob/jams/May%20Jam%20resources.zip

I'll be polishing this off over the coming week.

Over :)

Tuesday, 13 June 2017

EduBlocks blog 4: The Liverpool Makefest Minecraft Pixel Art twitter bot


Over the last few weeks I have been developing the EduBlocks Minecraft Pixel art Twitter bot that you can use if you are attending Liverpool Makefest on 24/06/17. 

I will be updating this blog over the coming weeks with a full write up of how to create your own version.  I have used the following Raspberry Pi tutorials as part of this build:

Here is what I want it to do........

1. Provide a quickish way(5mins approx) of people being able to create some Minecraft Pixelart without being able to forced to sit and code for 20 mins. 

2. Furthermore share their creation with the world via Twitter. Ideally use a Microbit to trigger the tweet. (This is still hit and miss)

Current review: It does one and two is still in the mixer. 

Here is version one which worked perfectly:

Here is version 2, which doesn't work so reliably when it comes to the Microbit part. 
Version 3: the lid is back on and microbit now working :)


With an internet connection, currently over wi-fi the twitter part works :) 

here are three examples of some of my trials:



I'll keep you posted with more when it gets updated.

Over :)

Code:
for micro:bit taken from RPi tutorial :
while True:
    if pin0.is_touched():
        display.scroll("say cheese!")
        sleep(500)
        pin1.write_digital(1)
        sleep(5000)
        pin1.write_digital(0)
Code for Twitter bot:

from gpiozero import Button
from time import sleep
from signal import pause

from datetime import datetime

import subprocess
#from mcpi.minecraft import Minecraft
from mcpi import minecraft as minecraft
from time import sleep, time
import sys

from twython import Twython
#once you have created your own Twitter app put in your info below



consumer_key = ''
consumer_secret = ''
access_token = ''
access_token_secret = ''
        
mc = minecraft.Minecraft.create()

api = Twython(consumer_key,consumer_secret,access_token,access_token_secret)
def Tweet(handle):
    
    timestamp = datetime.now().isoformat()
    msg = "#LivMF17 Pixelart bot! look what "+handle+" created at "+timestamp 
    mc.postToChat(msg)
    a=subprocess.check_output('./raspi2png -d 3 -p "myscreenshot.png"',shell=True)
    photo = open('myscreenshot.png', 'rb')
    api.update_status_with_media(status=msg, media=photo)
    
button = Button(4,pull_up = False)
while True:
    button.wait_for_press()
    handle = input("please type in your twitter handle")
    Tweet(handle)
    sleep(4)
  

here is the link for the Block ids sheet I've borrowed them from and Raspberry Pi spy this is sourced in the document:

https://github.com/ncscomputing/Hackpack/blob/master/Minecraft%20Pixel%20Art%20sheet.pdf